Log4j2 突出显示模式在文本编辑器中不起作用?
Log4j2 highlight pattern not working in text-editor?
我正在使用 log4j2 在 Wildfly 服务器上记录我的应用程序 (Jboss 8)。
我想要为我的日志自定义颜色编码,当我在我的 console/terminal 上看到日志时,它工作得很好。
模式如下:
log4j.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Routing name="Routing">
<Routes pattern="$${ctx:logFileName}">
<Route>
<RollingFile name="RollingFile" fileName="standalone/log/platform-${ctx:logFileName}.log" filePattern="standalone/log/platform-${ctx:logFileName}-%d{MM-dd-yyyy}.log.gz" append="true">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{id}] %style{[%X{logFileName}}{magenta}] [%t] %highlight{[%-5level]}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=magenta} %style{%c{1}:%L}{cyan} - %highlight{%msg%n%throwable}{INFO=white,TRACE=magenta}"/>
.....
但是,当我尝试在 vi 或 gedit 等文本编辑器中打开我的日志文件时,我得到了未知字符,例如:
[32m15:56:30.536 DEBUG com.syn.test.Test.main() @15 - this is debug message
[m[32m15:56:30.539 DEBUG com.syn.test.Test.main() @19 - this is debug messge
[m
我知道颜色编码在文本编辑器上不起作用,但是如何在我的编辑器中不包含未知字符并且还能够在控制台中查看颜色编码 .
您看到的这些字符称为 ANSI color codes。大多数终端和一些文本查看器会自动将它们正确地翻译成相应的颜色。
我通常看到这些代码仅用于
- Console/terminal 日志
- 将用
more <filename>
或less -r <filename>
查看的扫描日志
- 使用其他一些 ANSI 友好的工具或日志解析器读取和分析日志
在生产和真实服务器日志中,我发现通常不使用这些颜色。拥有这些转义码会使日志搜索的解析变得更加困难,减少 "standard",占用额外的 space,并且不会真正向日志内容本身添加任何内容。
如果您确实希望这些颜色能够查看日志,但不希望它们出现在分发或存档的服务器日志中,我会在您的 log4j
配置中配置两个日志;一个是 console/terminal/pretty-viewer 日志,一个用于存档和搜索目的。
我正在使用 log4j2 在 Wildfly 服务器上记录我的应用程序 (Jboss 8)。
我想要为我的日志自定义颜色编码,当我在我的 console/terminal 上看到日志时,它工作得很好。
模式如下:
log4j.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Routing name="Routing">
<Routes pattern="$${ctx:logFileName}">
<Route>
<RollingFile name="RollingFile" fileName="standalone/log/platform-${ctx:logFileName}.log" filePattern="standalone/log/platform-${ctx:logFileName}-%d{MM-dd-yyyy}.log.gz" append="true">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{id}] %style{[%X{logFileName}}{magenta}] [%t] %highlight{[%-5level]}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=magenta} %style{%c{1}:%L}{cyan} - %highlight{%msg%n%throwable}{INFO=white,TRACE=magenta}"/>
.....
但是,当我尝试在 vi 或 gedit 等文本编辑器中打开我的日志文件时,我得到了未知字符,例如:
[32m15:56:30.536 DEBUG com.syn.test.Test.main() @15 - this is debug message
[m[32m15:56:30.539 DEBUG com.syn.test.Test.main() @19 - this is debug messge
[m
我知道颜色编码在文本编辑器上不起作用,但是如何在我的编辑器中不包含未知字符并且还能够在控制台中查看颜色编码 .
您看到的这些字符称为 ANSI color codes。大多数终端和一些文本查看器会自动将它们正确地翻译成相应的颜色。
我通常看到这些代码仅用于
- Console/terminal 日志
- 将用
more <filename>
或less -r <filename>
查看的扫描日志
- 使用其他一些 ANSI 友好的工具或日志解析器读取和分析日志
在生产和真实服务器日志中,我发现通常不使用这些颜色。拥有这些转义码会使日志搜索的解析变得更加困难,减少 "standard",占用额外的 space,并且不会真正向日志内容本身添加任何内容。
如果您确实希望这些颜色能够查看日志,但不希望它们出现在分发或存档的服务器日志中,我会在您的 log4j
配置中配置两个日志;一个是 console/terminal/pretty-viewer 日志,一个用于存档和搜索目的。