maven - 找不到记录器的附加程序(org.springframework.web.context.ContextLoader)

标签 maven log4j slf4j appender

我继承了一堆代码,我注意到在 tomcat 日志中它说

log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

常见问题解答链接提到,当无法找到默认配置文件 log4j.properties 和 log4j.xml 并且应用程序未执行显式配置时,会发生这种情况。

我怎样才能弄清楚如何解决这个问题。 xml 文件具有以下内容。所以我猜是因为没有 log4j.xml,而是每个环境都有一个。假设这是问题所在,我该如何正确配置。

<bean id="log4jInitialization"
        class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
       <property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
       <property name="targetMethod" value="initLogging" />
       <property name="arguments">
          <list>
              <value>classpath:log4j-${environment}.properties</value>
          </list>
       </property>
    </bean>

最佳答案

很少有集体解决方案-

  1. 在定义 bean 时,应该有一些属性文件可以从中获取 ${environment} 的值(假设 env)。您必须注意将该值附加到文件名。应该存在于您的项目资源下。在您的例子中,名为 log4j-env.properties 的文件。

  2. 会推荐针对不同环境使用不同日志记录方法的方法,同时将它们分类在不同目录下,以便将您的值修改为 -

    <property name="arguments">
        <list>
            <value>#{environment + '/log4j.properties'}</value>
        </list>
    </property>
    
  3. 您可以在 web.xml 而不是 spring-context.xml 中配置您的 Log4j 监听器,因此它会在 Spring 启动之前启动。作为-

    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/${environment}/log4j.properties</param-value>
    </context-param>
    
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    

来源 - Initializing Log4J with Spring?

注意 - 关于如何在运行时为 environment 分配正确的值,请遵循 How to replace a value in web.xml with a Maven property?

关于maven - 找不到记录器的附加程序(org.springframework.web.context.ContextLoader),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38801914/

相关文章:

maven - 在maven中配置不同文件类型的编码?

java - 如何使用 maven-publish gradle 插件附加 AAR 文件的源代码?

java - log4j 在带有 Spring 的 JAX-WS 中无法正常工作

java - 可以使用 "log4j jms appender"将消息发送到 QUEUE 而不是 TOPIC(就像我在所有示例中发现的那样。)

java - Maven Java 集成

java - 将 logging.properties 文件更改为 Slf4j 中的不同路径

Java-DOM-Parser : Exception on Transformer. 转换

maven - 如何定时执行Maven的不同阶段

java - Log4J - 确定记录器是否无法写入文件系统

java - 如何避免slf4j日志记录中出现多个日志文件?