gpt4 book ai didi

java - Spring 类忽略工作 log4j 配置

转载 作者:行者123 更新时间:2023-12-01 16:08:21 25 4
gpt4 key购买 nike

我使用 log4j,他工作得很好。 log4j.xml 文件位于我的类路径中,我使用附加程序和类别...再次,它对于我的代码或其他库的代码工作得很好。

但是 Spring 类继续用我想在其他地方记录的消息淹没标准输出。它开始变得烦人了。

有问题的消息:org.springframework.jms:一些错误......更一般地说,org.springframework 包的所有类都会向 stdout 发送消息。

所以我把它放在我的 log4j.xml 中:

<appender name="JMS-ERROR" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="tms.logs.folder/tms.logs.files.prefix-jms-error.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="1000KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="**DVIDEA** %d{dd.MM.yyyy HH:mm:ss} %c %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>


<category name="org.springframework.jms" additivity="false">
<appender-ref ref="JMS-ERROR"/>
</category>

它与其他图书馆合作。为什么不 Spring ?

我做了一些研究,看来 Spring 使用通用日志记录,而不是 log4j。这是一个可能的原因吗?有什么解决办法吗?

我尝试将 log4jConfigurationListener 添加到我的 web.xml 中。他正在工作,但我仍然无法控制 Spring 错误消息。

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>10000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

编辑:

更多信息:

  • 我使用 Tomcat 5.5
  • 由于历史原因,log4j.property(旧的 log4j 配置)仍然存在。我尝试删除它 => 没有变化。

编辑2:我使用以下解决方法,但我对此不满意:它不可配置

java.util.logging.Logger springLogger = Logger.getLogger("org.springframework.jms");
springLogger.setLevel(Level.OFF);

最佳答案

请注意,在 Spring 示例中,他们使用 slf4j 将日志消息从 Commons Logging 路由到 log4j。在 Maven 的 pom.xml 中,它看起来像这样:

<!-- Exclude Commons Logging -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.context</artifactId>
<version>${spring.version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>com.springsource.org.apache.commons.logging</artifactId>
</exclusion>
</exclusions>
</dependency>

<!-- Add slf4j API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>com.springsource.slf4j.api</artifactId>
<version>${slf4j.version}</version>
</dependency>

<!-- Add Commons Logging -> slf4j bridge -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>com.springsource.slf4j.org.apache.commons.logging</artifactId>
<version>${slf4j.version}</version>
<scope>runtime</scope>
</dependency>

<!-- Add slf4j -> log4j bridge -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>com.springsource.slf4j.log4j</artifactId>
<version>${slf4j.version}</version>
<scope>runtime</scope>
</dependency>

关于java - Spring 类忽略工作 log4j 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2146671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com