当前位置: 首页 > 知识库问答 >
问题:

log4j: WARN无法找到记录器的附加程序(org.springframework.web.filter.特征EncodingFilter)。

弘承业
2023-03-14

我正在从log4j1.2迁移到log4j2。

我有我的整个配置到一个log4j2.properties文件。

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

log4j:WARN找不到记录器(org.springframework.web.filter.CharacterEncodingFilter)的追加器。log4j:警告请正确初始化log4j系统。log4j:请参阅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的附件,类型为Console

我使用此页面试图了解如何进行迁移。

你有没有看到任何关于我为什么要有这个特殊信息的解释?

共有1个答案

潘安邦
2023-03-14

从这个答案中可以看出,问题可能是因为我也在使用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>

所以我照办了,我删除了这个组织。slf4j:slf4j-log4j12依赖性和添加的log4j api

<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: 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相关性后,整个错误日志消失。

 类似资料:
  • 问题内容: 我已经将log4jConfigLocation放在web.xml中,但是仍然收到以下警告: 我错过了什么? 问题答案: 如果这是整个log4j.properties文件,则看起来您从未真正创建过记录器。您需要这样的一行:

  • 问题内容: 我正在尝试在Firefoxdriver上运行Selenium Webdriver代码,但在运行时我遇到了一个例外- 代码是-import org.openqa.selenium。*; 导入org.openqa.selenium.firefox.FirefoxDriver; 问题答案: 实际上,您得到的异常与您在帖子标题中提到的警告无关。 警告 :只是告诉您您没有为硒驱动程序定义任何附加

  • 我已经将log4j放入了buildpath中,但在运行应用程序时会收到以下消息: 这些警告意味着什么?这里的附加符是什么?

  • 问题内容: 我已经将log4j放到了我的构建路径中,但是在运行应用程序时收到以下消息: 这些警告是什么意思?这里的追加器是什么? 问题答案: 这个log4j指南的简短介绍有些陈旧,但仍然有效。 该指南将为你提供有关如何使用记录器和附加器的信息。 为了让你步入正轨,你可以采用两种简单的方法。 首先是将这一行添加到你的main方法中: 第二种方法是将这个标准文件log4j.properties(来自上

  • 我得到这个错误 这是我的主要任务 这是我的log.properties档案 这是我的文件结构。 我正处于Log4J的学习阶段,并试图实施一个虚拟项目来深入理解它。

  • 问题内容: 首先-是的,我已经阅读了有关此主题的多个问题和答案,但无法从中获得任何解决方案来帮助我。我没有运行Tomcat或JBoss,也没有要更改的文件。我正在使用Java 6.0和。 我正在使用IDEA IntelliJ创建一个可运行的jar文件,其中jar库是单独打包并通过清单链接的。我因此在Linux服务器上运行代码: 我的log4j配置文件(已放在和中,以防万一)是: 为了防万一,我再次