如何指示log4j输出,以便不同的日志级别转到不同的appender?

时间:2009-04-15 12:13:23

标签: log4j

是否可以将“debug”和“info”输出写入控制台,而“info”输出只写入某个日志文件?例如,给定此日志记录:

LOG.debug(fileContent);
LOG.info(fileLength);

相应的log4j.xml看起来像什么?

5 个答案:

答案 0 :(得分:10)

好的,我现在知道了:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        ...
    </appender>

    <appender name="otherAppender"
              class="org.apache.log4j.FileAppender FileAppender">
       <param name="Threshold" value="INFO"/>
        ...
    </appender>

    <root>
        <priority     value="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="otherAppender" />
    </root>
</log4j:configuration>

感谢您的帮助!

答案 1 :(得分:5)

这绝对是可能的。配置看起来像这样(没有检查语法正确性):

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        ...
    </appender>

    <appender name="otherAppender"
              class="org.apache.log4j.FileAppender FileAppender">
        ...
    </appender>

    <logger name="com.mycompany.mypackage.MyClass">
        <level        value="info"/>
        <appender-ref ref="otherAppender" />
    </logger>

    <root>
        <priority     value="debug" />
        <appender-ref ref="console" />
    </root>
</log4j:configuration>

所有调试和信息消息都转到console appender。信息消息转到otherAppender

答案 2 :(得分:1)

转到this页面查看一些示例。

就像在程序中添加两个不同的appender一样简单,只需要为每种类型的日志记录添加一个appender。

答案 3 :(得分:0)

使用Eddie的配置,我只能获得MyClass的“info”输出。但我想要的是MyClass的“info”输出转到一个文件,MyClass的“debug”输出转到控制台。

答案 4 :(得分:0)

按照rwwilden的建议,但删除此部分:

<logger name="com.mycompany.mypackage.MyClass">
    <level value="info"/>
    <appender-ref ref="otherAppender" />
</logger>

并在otherAppender下添加<param name="Threshold" value="INFO"/>