我正在从log4j 1.2迁移到log4j 2 .
我将我的整个配置放入log4j2.properties文件中 .
我注意到在启动tomcat时我的日志中出现了一条新的错误消息:
log4j:WARN找不到logger(org.springframework.web.filter.CharacterEncodingFilter)的appender . log4j:WARN请正确初始化log4j系统 . log4j:WARN有关详细信息,请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig .
我已经验证了以前的日志,之前我没有收到此警告 .
这是我之前的配置(在log4j.properties文件中):
log4j.rootLogger=INFO, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{dd-MM HH:mm:ss} %p %t %c - %m%n
log4j.logger.com.example=DEBUG
log4j.logger.org.springframework=INFO
这是新的(在log4j2.properties中):
appender.console.type = Console
appender.console.name = ConsoleAppender
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d %p %t %c - %m%n
loggers = log1, log2
logger.log1.name = org.springframework
logger.log1.level = INFO
logger.log1.appenderRef = ConsoleAppender
logger.log2.name = com.example
logger.log2.level = DEBUG
logger.log2.appenderRef = ConsoleAppender
rootLogger.level = ERROR
rootLogger.appenderRef.stdout.ref = ConsoleAppender
那么,到目前为止我所了解的是:
-
我创建了一个名为ConsoleAppender的appender,类型为Console
-
我创建两个 Logger ,每个 Logger 分别进入ConsoleAppender,一个在org.springframework(级别INFO),另一个在com.example(级别INFO)
我使用this page来尝试了解如何进行迁移 .
你看到有关为什么我应该有这个特定信息的任何解释?
1 回答
如this answer所示,问题可能是因为我还使用了slf4j-log4j12(但已经在最新版本中)并且它与其他log4j apis冲突:
所以我做了所说的,我删除了org.slf4j:slf4j-log4j12的依赖性并添加了log4j-api和log4j-slf4j-impl dependancies:
...并且知道它似乎解决了错误(它不再出现在我的起始日志中
为了更清楚,我首先只添加了上面三个依赖项而没有删除slf4j-log4j12,并且我在日志中也得到了这个:
删除slf4j-log4j12依赖后,整个错误日志消失了 .