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.

Warum nicht entfernen Sie den FTP-appender, die von der root-Kategorie? Ich meine, Sie wollen einfach nur die com.sshtools-Paket-Protokolle geschrieben werden, in das ftp-Protokoll, so dass Sie könnten entfernen Sie die FTP-appender aus dem root-Login.
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

Schreibe einen Kommentar