Ich möchte meine log4j.xml-Datei zum Protokollieren bestimmter Klassen/Pakete auf DEBUG-Ebene und den Rest auf Fehler-Ebene einrichten.Verwenden Sie log4j.xml, protokollieren bestimmte Datei oder Paket bei Debug alles andere bei Fehler
Wie Sie unten sehen können, habe ich die Protokollierungsstufe zu Info für gov.xxxx.app.batch.thread
und gov.xxxx.app.batch.sms.DoWork
zu info aktualisiert.
Es sieht jedoch so aus, als hätte die threshold
Vorrang (was Sinn macht). Gibt es eine Möglichkeit, es so zu machen, dass die Konfiguration der Klasse/Paket-Ebene Vorrang vor dem Schwellenwert hat? Oder ein anderer Ansatz, der das gewünschte Ergebnis bringen würde?
log4j.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="all"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%d %p %c %L - %m%n"/>
</layout>
</appender>
<appender name="logFile" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="${app.batchdriver.home}/logs/${app.batchdriver.log.name}"/>
<param name="maxFileSize" value="5MB"/>
<param name="maxBackupIndex" value="20"/>
<param name="threshold" value="error"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="conversionPattern" value="%d %p %c %L - %m%n"/>
</layout>
</appender>
<!-- Logger for Batch classes -->
<logger name="gov.xxxx.app">
<level value="error"/>
</logger>
<!-- Logger for Spring classes -->
<logger name="org.springframework">
<level value="error"/>
</logger>
<!-- Logger for Hibernate classes -->
<logger name="org.hibernate">
<level value="error"/>
</logger>
<!-- Logger for Apache classes -->
<logger name="org.apache">
<level value="error"/>
</logger>
<!-- Logger for Apache classes -->
<logger name="net.sf">
<level value="error"/>
</logger>
<!-- Logger for testing Performance -->
<logger name="gov.xxxx.app.batch.thread">
<level value="info"/>
</logger>
<logger name="gov.xxxx.app.batch.sms.DoWork">
<level value="info"/>
</logger>
<root>
<priority value ="all" />
<appender-ref ref="console"/>
<appender-ref ref="logFile"/>
</root>
</log4j:configuration>
Nein, ich möchte alle Fehler auf beiden protokollieren. Und ich möchte Info für beide genau dann und nur dann protokollieren, wenn es dem Paket oder dem Dateinamen entspricht. – ScrappyDev
dann ändern Ebene auf Root-Logger und Schwellenwert auf LogFile Appender zu INFO – hoaz
OK, also root = Fehler, Klasse/Paket = INFO, Schwelle = INFO? – ScrappyDev