我是log4j的新手并尝试在项目中使用它。由于某种原因,信息将不会显示在控制台上。它只有在我将其更改为logger.error()时才有效。这只发生在userServiceImpl类中,其他类如Controllers都可以。 这是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>
答案 0 :(得分:1)
您的根类别处于ERROR级别。任何不属于其他两个记录器的东西都将归根,并且只会记录在ERROR级别。如果您将根级别更改为INFO,我打赌它会记录,对吧?不是说这就是你想要的,但是这将是你的UserServiceImpl类现在在root下记录的线索。
修改的
尝试在服务包的记录器上将可加性设置为false。 additivity意味着消息传播到父节点,并且由于父节点是root和root日志到同一个控制台appender,因此很可能导致问题。