我正在追踪一些并发问题,在登录到控制台时,让每个线程的输出行以不同的颜色显示会非常有帮助。我在OS上。这可以使用转换模式来输出一些控制代码吗,或者它需要一个自定义的附加器吗?有人知道怎么做吗?
2011-10-21 12:14:42,859 ["http-bio-8080"-exec-9] DEBUG ...
2011-10-21 12:14:43,198 ["http-bio-8080"-exec-10] DEBUG ...exec-9和exec-10的行应使用不同的颜色。
发布于 2011-10-21 18:59:04
您可以扩展PatternLayout并覆盖format(ILoggingEvent)。在这里,你可以查看LoggingEvent.getThreadName(),根据线程名(奇数/偶数,也许?)获得一些颜色。
为了将颜色输出到控制台,您需要使用ANSI Escape Sequence。
例如,要输出红色文本:
"\u001b[" // Prefix - see [1]
+ "0" // Brightness
+ ";" // Separator
+ "31" // Red foreground
+ "m" // Suffix
+ text // the text to output
+ "\u001b[m " // Prefix + Suffix to reset color下面是一些例子:
由Ingo Thon.
ColoredPatternLayout实现。另外,也许你也可以通过在MDC中设置一个带有随机ANSI颜色代码的变量"randColor“来实现这一点,例如,在Filter中,并在log4j的控制台附加器配置中的标准org.apache.log4j.PatternLayout的conversionPattern中使用它:
<appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="\u001b[0;%X{randColor}m ....... \u001b[m" />
</layout>
</appender>1什么是"\u001BJ" represent?
发布于 2012-08-30 23:01:54
您可以从jcabi-log使用MulticolorLayout。将此依赖项添加到项目中:
<dependency>
<groupId>com.jcabi</groupId>
<artifactId>jcabi-log</artifactId>
<version>0.17.1</version>
</dependency>然后在log4j.properties中进行配置
log4j.rootLogger=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=com.jcabi.log.MulticolorLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%color{%p}] %c: %m%n在log4j.xml中也是如此
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="com.jcabi.log.MulticolorLayout">
<param name="ConversionPattern" value="[%color{%p}] %m%n" />
</layout>
</appender>在本例中,%p将由DEBUG、INFO、ERROR等替换,然后绘制为与日志记录级别相关的颜色。此外,您还可以使用自己的颜色或预定义的颜色,例如:
log4j.appender.CONSOLE.layout.ConversionPattern=[%p] $color-cyan{%c}: %color-red{%m}%n
log4j.appender.CONSOLE.layout.ConversionPattern=[%p] $color-0;0;31{%c}: %m%n有关ANSI colors的更多文档。
发布于 2021-10-20 14:20:09
请参见PatternLayout,配置属性"highlight":https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout

https://stackoverflow.com/questions/7848325
复制相似问题