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

8 log4j

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

LOG.debug(fileContent);
LOG.info(fileLength);
Run Code Online (Sandbox Code Playgroud)

相应的log4j.xml外观是什么样的?

小智 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>
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!


Ron*_*erg 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>
Run Code Online (Sandbox Code Playgroud)

所有调试和信息消息都转到consoleappender.信息消息转到otherAppender.