log4j在控制台上没有显示信息

3

我是log4j的新手,正在尝试在项目中使用它。由于某种原因,信息不会显示在控制台上。只有当我将其更改为logger.error()时才有效。这仅发生在userService实现类中,其他类(如控制器)都没有问题。 以下是log4j.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration debug="false"
    xmlns:log4j="http://jakarta.apache.org/log4j/">
    <!-- This default ConsoleAppender is used to log all NON perf4j messages 
        to System.out -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n" />
        </layout>
    </appender>

    <!-- The root logger sends all log statements EXCEPT those sent to the perf4j 
        logger to System.out. -->
    <root>
        <level value="ERROR" />
        <appender-ref ref="console" />
    </root>
    <logger name="com.click.heal.controller" additivity="false" >
      <level value="INFO" />
      <appender-ref ref="console"/>
   </logger>
    <logger name="com.click.heal.service" additivity="true" >
      <level value="INFO" />
        <appender-ref ref="console"/>
    </logger>
</log4j:configuration>
1个回答

2
您的根类别处于错误级别。任何不属于您其他两个记录器之一的内容都将落在根下,并且仅以错误级别记录日志。如果您将根级别更改为INFO,我打赌它会记录日志,对吧?并不是说这就是您想要的,但这将是一个线索,表明您的UserServiceImpl类正在根下记录日志。
编辑
尝试在服务包的记录器上将添加性设置为false。添加性意味着消息传播到父级,由于父级是根且根日志记录到相同的控制台附加器,因此似乎很可能会导致问题。

抱歉,我忘了提到我遇到问题的类是在服务包中,而该包被log4j.xml文件中的第二个日志记录器所覆盖。即使我将根级别更改为INFO,它仍然无法正常工作。但是当我尝试使用logger.getRootLogger().setLevel(level.INFO)时,它开始正常工作。看起来log4j.xml文件中的根设置对这个类不起作用。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接