log4j:WARN 在 web 中找不到记录器的附加器.xml

2022-08-31 12:02:11

我已经将log4jConfigLocation放在web.xml中,但我仍然收到以下警告:

log4j:WARN No appenders could be found for logger ⤦
    ⤥ (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.

我错过了什么?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext.xml
        </param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </context-param>

    <listener>
        <listener-class>
            org.springframework.web.util.Log4jConfigListener
        </listener-class>
    </listener>
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>suara2</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>suara2</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

答案 1

如果这是整个log4j.properties文件,看起来你从来没有真正创建过记录器。你需要一行这样的线:

log4j.rootLogger=debug,A1

答案 2

我在类路径的正确位置有log4j.properties,并且仍然收到这个警告,任何直接使用它的东西。由于某种原因,通过commons-loging使用log4j的代码似乎很好。

如果您有:

log4j.rootLogger=WARN

将其更改为:

log4j.rootLogger=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n

根据 http://logging.apache.org/log4j/1.2/manual.html

根记录器是匿名的,但可以使用 Logger.getRootLogger() 方法进行访问。没有附加到根的默认追加器。

这意味着您需要为根记录器指定一些追加器(任何追加器)才能进行日志记录。

将该控制台追加器添加到 rootLogger 会使此投诉消失。


推荐