web-dev-qa-db-fra.com

log4j: Journalise la sortie d'une classe spécifique vers un appender spécifique

J'utilise log4j et j'aimerais acheminer la sortie de certains enregistreurs vers des fichiers spécifiques.

J'ai déjà plusieurs appenders en place. Maintenant, pour faciliter le débogage, je veux dire à log4j que la sortie générée par une classe spécifique (par exemple, foo.bar.Baz) doit être écrite dans un fichier journal spécifique.

Cela peut-il être fait?

151
gubrutz

Un exemple:

log4j.rootLogger=ERROR, logfile

log4j.appender.logfile=org.Apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.datePattern='-'dd'.log'
log4j.appender.logfile.File=log/radius-prod.log
log4j.appender.logfile.layout=org.Apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n

log4j.logger.foo.bar.Baz=DEBUG, myappender
log4j.additivity.foo.bar.Baz=false

log4j.appender.myappender=org.Apache.log4j.DailyRollingFileAppender
log4j.appender.myappender.datePattern='-'dd'.log'
log4j.appender.myappender.File=log/access-ext-dmz-prod.log
log4j.appender.myappender.layout=org.Apache.log4j.PatternLayout
log4j.appender.myappender.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n
196
Maurice Perry

Voici une réponse concernant la configuration XML, notez que si vous ne donnez pas un fichier à appender, ConversionPattern, il créera un fichier de 0 octet sans rien écrire:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.Apache.org/log4j/">
    <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>

    <appender name="bdfile" class="org.Apache.log4j.RollingFileAppender">
        <param name="append" value="false"/>
        <param name="maxFileSize" value="1GB"/>
        <param name="maxBackupIndex" value="2"/>
        <param name="file" value="/tmp/bd.log"/>
        <layout class="org.Apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
        </layout>
    </appender>

    <logger name="com.example.mypackage" additivity="false">
        <level value="debug"/>
        <appender-ref ref="bdfile"/>
    </logger>

    <root>
        <priority value="info"/>
        <appender-ref ref="bdfile"/>
        <appender-ref ref="console"/>
    </root>

</log4j:configuration>
20
mikeb