Log4j2高亮模式在文本编辑器中不起作用?

时间:2018-12-13 06:15:43

标签: java logging log4j log4j2 slf4j

我正在使用log4j2在Wildfly服务器(Jboss 8)上记录我的应用程序。

我想要为我的日志自定义颜色编码,当我在控制台/终端上看到日志时,它工作得很好。

以下是模式:

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

我知道颜色编码在文本编辑器上不起作用,但是如何在编辑器中不包含未知字符,以及如何在控制台中看到颜色编码

1 个答案:

答案 0 :(得分:3)

您看到的那些字符称为ANSI color codes。大多数终端和某些文本查看器会自动将其正确转换为相应的颜色。

我通常看到这些代码仅用于

  1. 控制台/终端日志
  2. 扫描将用more <filename>less -r <filename>查看的日志
  3. 使用其他一些ANSI友好工具或日志解析器读取和分析日志

对于生产和真实服务器日志,我已经看到通常不使用这些颜色。拥有这些转义码会使日志搜索更难解析,不那么“标准”,占用更多空间,并且不会在日志内容本身中真正添加任何内容。

如果您确实希望这些颜色能够查看日志,但又不想在分发或存档的服务器日志中使用它们,则可以在log4j配置中配置两个日志;一个是控制台/终端/查看器日志,另一个是用于存档和搜索的目的。