Java log4j 2向控制台追加器添加多种颜色
嗨,我刚刚下载并配置了log4j-2。我一直在为Java log4j 2向控制台追加器添加多种颜色,java,xml,jakarta-ee,log4j2,Java,Xml,Jakarta Ee,Log4j2,嗨,我刚刚下载并配置了log4j-2。我一直在为SlowConsole控制台附加程序应用颜色代码。我的控制台附件如下所示 <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayo
SlowConsole
控制台附加程序应用颜色代码。我的控制台附件如下所示
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/>
</Console>
<Console name="SlowConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red, ERROR=red, WARN=yellow, INFO=black, DEBUG=green, TRACE=blue}"/>
</Console>
<File name="File" fileName="C:\log\out.txt">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n" />
</File>
</Appenders>
<Loggers>
<logger name="org.abc.ea.web" level="ALL" additivity="false">
<!--Log4j for the WEB MODULE -->
<appender-ref ref="SlowConsole"/>
</logger>
<logger name="org.abc.ea.ejb" level="ALL" additivity="false">
<!--Log4j for the EJB MODULE -->
<appender-ref ref="SlowConsole"/>
</logger>
<Root level="ERROR">
<AppenderRef ref="Console"/>
<AppenderRef ref="File" />
</Root>
</Loggers>
</Configuration>
我有两个问题
dim
和bold
1:是的,没关系!您还可以添加一些其他选项。看 2:您可以将HTMLLayout用于文件追加器 看
我想我找到了解决办法。我下载了log4j2-core-sources.jar并跟踪了日志。你可以这样写
<Console name="SlowConsole" target="SYSTEM_OUT">
<PatternLayout disableAnsi="false" pattern="%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}"/>
</Console>
我认为log4j2及其示例可能需要更新。在使用eclipse控制台时,很高兴看到红色和红色的错误 所有其他日志均为黑色。可以使用过滤器执行此操作:
<Appenders>
<Console name="ConsoleStdOut" target="SYSTEM_OUT">
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/>
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<Console name="ConsoleStdErr" target="SYSTEM_ERR">
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="ConsoleStdOut" />
<AppenderRef ref="ConsoleStdErr" />
</Root>
</Loggers>
对于看起来非常接近Spring Boot默认logback控制台输出的log4j2彩色输出:
<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} %highlight{${LOG_LEVEL_PATTERN:-%5p}}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=blue} %style{${sys:PID}}{magenta} [%15.15t] %style{%-40.40C{1.}}{cyan} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
</Console>
这在我的Spring Boot应用程序中起作用
但我不确定它是否能在没有弹簧靴的情况下工作。弹簧靴风格:
%d{yyyy-MM-dd HH:MM:ss.SSS}%高亮显示{${LOG_-LEVEL_-PATTERN:-%5p}{FATAL=red,ERROR=red,WARN=yellow,INFO=green,DEBUG=green,TRACE=green}%style{${sys:PID}{magenta}-[%15.15t]%style{-40.40c{1.}{青色}:%m%n%ex
谢谢@Homayoun!我的第二个问题还没有解决。我正在使用一个控制台。我希望我的日志可以在netbeans、eclipse或任何STD_OUT上查看。所以HTMLYout不会工作,不是吗?这取决于你的标准浏览器。。。例如,EclipseStdout(output)对粗体字没有任何意义。如果您能为文档提供补丁,那就太好了!永远感谢你的帮助!找到一个手动搜索highlight{pattern}{style}
@harmeethingh是的,这个答案现在有点旧了。我还必须做disableAnsi=“false”来添加到@KalpeshSoni答案中disableAnsi=“false”
进入
旁边的pattern=“”
添加了disableAnsi=“false”,这正是我在应用自定义日志配置后想要的!我从转换模式中的209位置获得了无法识别的转换说明符[wEx]。有人知道发生了什么吗?是的,它看起来像原始的Logback Spring记录器。正是我想要的。但如果PatternLayout标记中没有disableAnsi=“false”属性,它就无法工作。谢谢大家!@ycomp我已经修改了模式,您提到的问题也得到了解决。。。尝试以下模式:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout
pattern="%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n%xwEx"/>
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>