如何将log4j输出定向到不同的附加器,以便不同的日志级别可以分别处理?

8

在将“debug”和“info”输出写入控制台的同时,是否可能仅将“info”输出写入某个日志文件中?例如,给定以下日志记录:

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

相应的 log4j.xml 长什么样子呢?

5个回答

11

好的,我现在明白了:

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

谢谢你的帮助!


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 输出器。信息消息发送到 otherAppender


1

访问this页面以获取一些示例。

只需将两个不同的appender添加到您的程序中,每个appender用于您想要执行的日志记录类型。


0

按照rwwilden的建议操作,但删除这部分内容:

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

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


0

使用Eddie的配置,我只能获得MyClass的“info”输出。但是我想要的是MyClass的“info”输出写入文件,而“debug”输出在控制台显示。


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