Log4j调试到文件 - 信息到控制台

时间:2014-02-02 15:55:19

标签: java logging log4j slf4j log4


我正在使用log4j进行日志。
我有一个类,我想打印到控制台只有log.info级别,
并打印到一些文件log.info + log.debug级别(同一个类)。

我尝试按如下方式设置log4j.xml:

<!--appender to parser file-->
<appender name="parserFile" class="org.apache.log4j.FileAppender">
    <param name="File" value="/var/log/java/parser/parser.log" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{E MMM dd HH:mm:ss} %c : %m%n" />
    </layout>
</appender> 

 <!--appender to the stdout-->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
    </layout>
</appender>


<logger name="parser.ParserMainJava">
    <level value="debug" />
    <appender-ref ref="parserFile" />
</logger>

<logger name="parser.ParserMainJava">
    <level value="info" />
    <appender-ref ref="console" />
</logger>

这是我的配置,但我不能使用具有相同包名的2个记录器。
有什么建议 ?
谢谢,

2 个答案:

答案 0 :(得分:2)

只需为调试级别的“parser.ParserMainJava”定义一个记录器,并将以下参数添加到控制台appender定义中:

<param name="Threshold" value="INFO"/>

答案 1 :(得分:0)

就我而言,我需要调整我的 AppenderRef。将 param 元素添加到 ConsoleAppender 不起作用。 Loggers里面的这个元素很好。

<Root level="debug">
   <AppenderRef ref="FileAppender" />
   <AppenderRef ref="ConsoleAppender" level="info"/>
</Root>