Dmitry
Dmitry

Reputation: 3038

log4j: errors to an errorFile

I have a class which events I want to log. Say, there are 2 levels: debug and error. How can I log errors to an errorFile and debug info to a debugFile?

So that I use log4j.xml there is a filter mechanism, but it seems to work only for different categories not inside one class.

Please, help to newbie. =)

Upvotes: 2

Views: 2841

Answers (1)

FrVaBe
FrVaBe

Reputation: 49341

You have to define and use two appender with different Threshold like this:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <!-- Error -->
    <appender name="ErrorFile"
         class="org.apache.log4j.RollingFileAppender">
        <param name="Threshold" value="error"/>
        <param name="file" value="log.err" />
        <param name="MaxFileSize" value="10MB" />
        <param name="MaxBackupIndex" value="10" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d %C.%M (%L) - %m%n" />
        </layout>
    </appender>

    <appender name="LogFile"
         class="org.apache.log4j.RollingFileAppender">
        <param name="Threshold" value="debug"/>
        <param name="file" value="log.log" />
        <param name="MaxFileSize" value="10MB" />
        <param name="MaxBackupIndex" value="10" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d %C.%M (%L) - %m%n" />
        </layout>
    </appender>

    <logger name="foo.bar" additivity="false">
        <level value="debug" />
        <appender-ref ref="LogFile" />
        <appender-ref ref="ErrorFile" />
    </logger>

    <root>
        <priority value="warn" />
        <appender-ref ref="ErrorFile"/>
    </root>

</log4j:configuration>

This question is also answered in the log4j FAQs.


Just found the LogToAppenderByLevel solution (here) which may be also helpful for you.

Upvotes: 3

Related Questions