log4j:WARN没有为logger找到appender(org.springframework.web.filter.CharacterEncodingFilter)。用log4j2

时间:2017-08-02 14:37:37

标签: java spring tomcat logging log4j2

我正在从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
  • 我创建两个记录器,每个记录器分别在ConsoleAppender上,一个在org.springframework上(级别INFO),另一个在com.example上(级别INFO)

我使用this page来尝试了解如何进行迁移。

您是否看到有关我为何应该收到此特定讯息的任何解释?

1 个答案:

答案 0 :(得分:1)

this answer所示,问题可能是因为我还使用了slf4j-log4j12(但已经是最新版本)并且它与其他版本冲突log4j apis:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.25</version>
</dependency>

所以我做了什么告诉我并删除了org.slf4j:slf4j-log4j12的依赖性并添加了log4j-api&amp; log4j-slf4j-impl dependancies:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.8.2</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.8.2</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.8.2</version>
</dependency>

...而且知道它似乎解决了错误(它不再出现在我的起始日志中

更清楚的是,我首先只添加了上面三个依赖项,而没有删除slf4j-log4j12,并且我也将其添加到了日志中:

  

SLF4J:发现绑定   [JAR:文件:/myuser/apache-tomcat-7.0.75/webapps/mywebapp/WEB-INF/lib/log4j-slf4j-impl-2.8.2.jar /org/slf4j/impl/StaticLoggerBinder.class]   SLF4J:在[jar:file:/myuser/apache-tomcat-7.0.75/webapps/mywebapp/WEB-INF/lib/slf4j-log4j12-1.7.25.jar!/ org / slf4j / impl / StaticLoggerBinder中找到绑定。类]

删除slf4j-log4j12依赖后,整个错误日志消失了。