Java log4j:WARN找不到记录器(org.springframework.web.filter.CharacterEncodingFilter)的追加器。使用log4j2

Java log4j:WARN找不到记录器(org.springframework.web.filter.CharacterEncodingFilter)的追加器。使用log4j2,java,spring,tomcat,logging,log4j2,Java,Spring,Tomcat,Logging,Log4j2,我正在从log4j1.2迁移到log4j2 我将整个配置保存到一个log4j2.properties文件中 我注意到在启动tomcat时,我的日志中出现了一条新的错误消息: log4j:WARN找不到记录器(org.springframework.web.filter.CharacterEncodingFilter)的追加器。 log4j:警告请正确初始化log4j系统。 log4j:有关更多信息,请参阅警告 我已经用以前的日志进行了验证,以前没有此警告 这是我以前的配置(在log4j.prop

我正在从log4j1.2迁移到log4j2

我将整个配置保存到一个log4j2.properties文件中

我注意到在启动tomcat时,我的日志中出现了一条新的错误消息:

log4j:WARN找不到记录器(org.springframework.web.filter.CharacterEncodingFilter)的追加器。 log4j:警告请正确初始化log4j系统。 log4j:有关更多信息,请参阅警告

我已经用以前的日志进行了验证,以前没有此警告

这是我以前的配置(在log4j.properties文件中):

下面是新的一个(在log4j2.properties中):

因此,到目前为止我所了解的是:

  • 我创建了一个类型为Console的appender,名为ConsoleAppender
  • 我创建了两个记录器,每个记录器都进入ConsoleAppender,一个在org.springframework(级别信息)上,另一个在com.example(级别信息)上
我经常尝试了解如何进行迁移

您是否看到有关我为什么要使用此特定消息的任何解释?

如中所示,问题可能是因为我也在使用slf4j-log4j12(但已在最新版本中),并且它与其他log4j API冲突:

<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 api
1.7.25
org.slf4j
slf4j-log4j12
1.7.25
因此,我照办了,删除了org.slf4j:slf4j-log4j12依赖性,并添加了log4j api和log4j-slf4j-impl依赖性:

<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>

org.apache.logging.log4j
log4j型芯
2.8.2
org.apache.logging.log4j
log4japi
2.8.2
org.apache.logging.log4j
log4j-slf4j-impl
2.8.2
。。。对于“知道”来说,它似乎解决了错误(它不再出现在我的开始日志中)

更清楚地说,我首先只添加了上述三个依赖项,而没有删除slf4j-log4j12一个,我也在日志中得到了这一点:

SLF4J:在中找到绑定 [jar:file:/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.class]中找到绑定


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

是否尝试指定配置文件位置?我认为该错误意味着Log4j找不到它:似乎没有必要指定它,因为log4j2.properties是自动找到的(由于log4j.properties是在以前的版本中自动找到的)再次阅读日志消息,我注意到是1.2版本没有找到它的配置,而不是2.4版本。可能旧的1.2 jar仍然在您的类路径中?
<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>
<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>