【问题标题】:log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment)log4j:警告找不到记录器的附加程序(org.springframework.web.context.support.StandardServletEnvironment)
【发布时间】:2014-07-30 21:10:31
【问题描述】:

我正在尝试在我的 spring 项目中配置 log4j,但是在我的 pom.xml 中包含它之后:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

这个文件 log4j2.xml 在我的类路径中:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

当我部署应用程序时,控制台中会显示此消息(并且没有日志消息):

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

我访问了指定的链接,但其中的信息对我没有帮助。

有人知道我想念什么吗?

ps.:在我的课程中,我也添加了这一行:

static final Logger logger = LogManager.getLogger(AcessoService.class.getName());

并添加:

logger.error(...);

在我想要的地方,但正如我所说,控制台中没有显示任何日志消息。

更新

现在我将文件名更正为 log4j.xml 并将错误消息更改为:

log4j:WARN Continuable parsing error 2 and column 30
log4j:WARN O elemento-raiz do documento "Configuration" deve corresponder à raiz de DOCTYPE "null".
log4j:WARN Continuable parsing error 2 and column 30
log4j:WARN O documento é inválido: nenhuma gramática encontrada.
log4j:ERROR DOM element is - not a <log4j:configuration> element.

更新 2

下面的文件更正了第二个错误,但我回到了我在这里发布的第一个错误:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

【问题讨论】:

    标签: java spring maven logging log4j


    【解决方案1】:

    您有一个名为 log4j2.xml 的文件(末尾有一个 exta“2”。)。默认情况下,Spring 从类路径加载 log4j.properties 或 log4j.xml。如果你想加载一个不同的文件,你必须告诉 Spring 来选择它。下面给出一个示例。

    在您的 web.xml 中,

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

    见http://javafindings.wordpress.com/2013/06/12/integrating-log4j-with-spring-3-0-mvc/

    【讨论】:

    • Spring 能够找到 log4j2.xml,这就是它给出解析错误的原因。我认为 Spring 期待 log4j v1,但发现 log4j v2。如何解决?
    【解决方案2】:

    新错误与 log4j.xml 文件的内容有关。 您的根配置元素没有命名空间声明:

    <log4j:configuration debug="true"
                         xmlns:log4j="http://jakarta.apache.org/log4j/">
    

    这有帮助吗?

    【讨论】:

    猜你喜欢
    • 2018-03-21
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2012-09-13
    • 1970-01-01
    相关资源
    最近更新 更多