2013-06-21 69 views
1

我是log4j的新手,并试图在项目中使用它。出于某种原因,信息不会显示在控制台上。它只适用于我将其更改为logger.error()。这只发生在userServiceImpl类中,像Controllers这样的其他类都可以。 这是log4j.xml:log4j没有在控制台上显示信息

<?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

您的根类别处于ERROR级别。任何不属于其他两个记录器的东西都将归入根目录,并且只会记录在ERROR级别。如果您将根级别更改为INFO,我打赌它会记录日志,对吧?不是说这就是你想要的,但是现在你的UserServiceImpl类正在根目录下记录下来。

编辑

尝试关闭加为false,您的记录器的服务包。可加性意味着消息传播给父节点,并且由于父节点是根和根日志记录到同一个控制台appender,因此可能导致此问题。

+0

对不起,我忘了提及我遇到问题的类是在log4j.xml中由第二个记录器覆盖的服务包内。我甚至将根级别更改为INFO,但它仍然不起作用。在我尝试logger.getRootLogger()。setLever(level.INFO)后,它开始工作。看起来像log4j.xml中的根设置无法在此类上工作 –

+0

它现在正在工作!谢谢吉姆! –

+0

没问题,很高兴我能帮到你。 – Jim

相关问题