log4j-xml-schreiben von Protokollen aus einem Paket, um Ihre eigenen log-Datei
Ich bin sicher, dies ist einfach, aber zwischen Google und SO habe ich nicht die Antwort gefunden.
Ich habe einen jboss-4.0.2 (ich weiß, es ist alt, aber ich kann es nicht ändern jetzt) webapp mit log4j 1.2.9. Ich habe Protokolle für eine console-appender sowie ein rolling file appender und Sie funktionieren beide gut.
Ich versuche zum einrichten einer log-Datei, die log-Nachricht, die von einem der Pakete (in meinem Fall die com.sshtools-Paket, die wir für SFTP). Die wichtigsten log-Fehler, und die Konsole kann auch diese Nachrichten (oder auch nicht, ich wirklich don ' T care). Jedoch das ftp-Protokoll sollte NUR Nachrichten aus der com.sshtools-Paket. Leider, wenn ich die webapp, das FTP-log bekommt alle Nachrichten, statt nur der FTP-ones.
Ich bin derzeit mit Kategorien so legen Sie Ebenen für bestimmte Pakete und mit der appender-ref-Attribut. Ich habe versucht Einstellung der additivität auf false für das Paket aus, ohne Erfolg. Ich habe versucht, wechseln Sie die Kategorien, um die Logger ohne Erfolg. Ich habe versucht Einstellung appender-ref-tags für alle Pakete (mit Ihnen gehen auf die KONSOLE und die DATEI aber nicht FTP) ohne Erfolg.
Habe ich gesehen, Antworten für Sie tun dies mit einer properties-Datei, NICHT aber mit einer xml-Datei. Da ich nicht weiß, wie Sie zu übersetzen, aus einer properties-Datei in die xml-Datei, die waren nicht hilfreich für mich.
Meine log4j.xml unter:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!-- ===================================================================== -->
<!-- -->
<!-- Log4j Configuration -->
<!-- -->
<!-- ===================================================================== -->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<!-- ================================= -->
<!-- Preserve messages in a local file -->
<!-- ================================= -->
<!-- A time/date based rolling appender -->
<appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.home.dir}/log/server.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="20MB"/>
<param name="MaxBackupIndex" value="50"/>
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<appender name="FTP" class="org.jboss.logging.appender.RollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.home.dir}/log/ftp.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="20MB"/>
<param name="MaxBackupIndex" value="50"/>
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Target" value="System.out"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<!-- ================ -->
<!-- Limit categories -->
<!-- ================ -->
<!-- Limit the org.apache category -->
<category name="org.apache">
<priority value="INFO"/>
</category>
<!-- Limit the org.jgroups category -->
<category name="org.jgroups">
<priority value="WARN"/>
</category>
<!-- Limit apache axis -->
<category name="org.jboss.axis">
<priority value="INFO"/>
</category>
<!-- Limit JBoss categories -->
<category name="org.jboss">
<priority value="INFO"/>
</category>
<!-- Limit the JSR77 categories -->
<category name="org.jboss.management">
<priority value="INFO"/>
</category>
<!-- Limit j2ssh categories -->
<category name="com.sshtools">
<priority value="WARN"/>
<appender-ref ref="FTP"/>
</category>
<!-- Limit Hibernate categories -->
<category name="org.hibernate">
<priority value="ERROR"/>
</category>
<!-- Limit mchange categories -->
<category name="com.mchange">
<priority value="WARN"/>
</category>
<!-- ======================= -->
<!-- Setup the Root category -->
<!-- ======================= -->
<root>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
<appender-ref ref="FTP"/>
</root>
</log4j:configuration>
EDIT: ich habe versucht, die Neuordnung der Kategorien und tags in Ihnen (nicht, dass es sollte einen Unterschied machen) und trotzdem keine änderung.
Das war die Lösung! Ich weiß nicht genug über log4j und ich nehme an allen appenders musste Hinzugefügt werden, um die root-Kategorie. Danke! Wenn Sie maket seinem Kommentar eine Antwort, ich werde es akzeptieren, damit die anderen wissen, dass die Frage beantwortet wurde.
Ich bin froh, dass ich geholfen habe. Ich poste den Kommentar als Antwort. Danke 🙂
InformationsquelleAutor Kane | 2013-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie können die FTP-appender aus dem root-logger logger-element, da der FTP konfiguriert ist, um das protokollieren der Anfragen aus der com.sshtools-Paket.
Den root-logger befindet sich an der Spitze der logger-Hierarchie. Jede aktivierte Anmeldung Anfrage für einen bestimmten logger weitergeleitet werden allen appenders in dieser logger, sowie die appenders die in der Hierarchie höher. In anderen Worten, appenders vererbt werden Additiv aus der logger-Hierarchie. Zum Beispiel, wenn eine console-appender Hinzugefügt wird, um die root-logger, die Protokollierung aktiviert, dann werden alle Anfragen, die Sie zumindest in der print auf die Konsole. Wenn zusätzlich ein Datei-appender Hinzugefügt wird ein logger, sagen wir L, dann aktiviert die Protokollierung von Anforderungen für L und L die Kinder von drucken auf eine Datei und auf der Konsole. Es ist möglich, um dieses Standardverhalten außer Kraft setzen, so dass appender Akkumulation ist nicht mehr Additiv durch die Einstellung der additivität flag auf "false".
Ich hoffe, das hilft.
InformationsquelleAutor Apostolos Emmanouilidis