我正在尝试使用Log4j和log4j.properties
文件配置我的日志输出,但是我在根据日志级别设置彩色输出时遇到了问题。
似乎日志记录实用程序根本不解析%highlight ...
转换命令。
我可以告诉我,我正在使用配置,因为模式的其他部分正常工作。
我的当前代码基于此S / O答案:log4j 2 adding multiple colors to console appender
我认为这是一件我看不到的简单事情,因为我对此很陌生。遗憾的是,文档很难拼凑在一起,或者用于基于xml的配置。
感谢您提前提供任何帮助。
我一直在寻找的一些资源:
以下是相关文件/代码:
log4j.rootLogger=TRACE, STDOUT
log4j.logger.deng=INFO
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%highlight{%d %-5p [%t] (%F:%L) - %m%n}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}
dependencies {
// The production code uses the SLF4J logging API at compile time
compile 'org.slf4j:slf4j-api:1.7.+'
compile 'org.slf4j:slf4j-log4j12:1.7.+'
testCompile 'junit:junit:4.12'
}
@Test
public void testLogger(){
LOGGER.info("Info level log");
LOGGER.debug("Debug level log");
LOGGER.warn("Warn level log");
LOGGER.error("Error level log");
LOGGER.trace("Trace level log");
}
log4j:ERROR Unexpected char [h] at position 2 in conversion patterrn.
%highlight{2017-07-08 13:18:21,243 INFO [main] (LongLinkedListTest.java:40) - Info level log
}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}%highlight{2017-07-08 13:18:21,246 DEBUG [main] (LongLinkedListTest.java:41) - Debug level log
}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}%highlight{2017-07-08 13:18:21,246 WARN [main] (LongLinkedListTest.java:42) - Warn level log
}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}%highlight{2017-07-08 13:18:21,246 ERROR [main] (LongLinkedListTest.java:43) - Error level log
}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}%highlight{2017-07-08 13:18:21,246 TRACE [main] (LongLinkedListTest.java:44) - Trace level log
}{FATAL=red, ERROR=red, WARN=yellow bold, INFO=black, DEBUG=green bold, TRACE=blue}
Process finished with exit code 0
对于子孙后代,我最终得到了以下内容:
dependencies {
//logging dependencies
compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.+'
compile 'org.apache.logging.log4j:log4j-api:2.+'
compile 'org.apache.logging.log4j:log4j-core:2.+'
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2+'
compile 'com.fasterxml.jackson.core:jackson-databind:2+'
...
}
一旦我更新了依赖项,我就可以转移到基于yaml的配置,使用%highlight
表示法就像魅力一样!
如果有人希望看到最终配置,可以在此处找到:https://github.com/Epic-Breakfast-Productions/OWAT/blob/master/implementations/java/src/main/resources/log4j2.yaml
答案 0 :(得分:2)
您是否可能将Log4j2与log4j 1.x混合使用? log4j:ERROR
错误是遗留log4j 1.2错误消息。
请仅使用Log4j2依赖项和使用Log4j2配置来简化问题。默认情况下,配置文件名为log4j2.xml。
请删除org.slf4j:slf4j-log4j12:1.7.+
依赖项,而是使用log4j-api-2.x,log4j-core-2.x和log4j-slf4j-impl-2.x。
有用的链接:
Log4j 1.2 became End of Life。让我们升级吧! : - )