web-dev-qa-db-fra.com

Exemple de configuration xml pour log4j, avoir une 'main' Java application et vouloir écrire dans un fichier

Existe-t-il des exemples de fichiers de configuration log4j (XML).

J'ai une application principale Java.

Je veux que log4j sorte sur console ET écrive dans un fichier.

Tout exemple de cela serait grandement apprécié.

J'utilise des netbeans si cela est important.

19
Blankman

Il suffit d'avoir plus d'un appender dans votre log4j.xml, comme ceci:

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

   <appender name="consoleAppender" class="org.Apache.log4j.ConsoleAppender">
      <layout class="org.Apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n"/>
      </layout>
   </appender>

   <appender name="fileAppender" class="org.Apache.log4j.RollingFileAppender">
      <param name="append" value="false"/>
      <param name="file" value="out/learning.log"/>
      <layout class="org.Apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
   </appender>

   <root>
      <level value="INFO"/>
      <appender-ref ref="consoleAppender"/>
      <appender-ref ref="fileAppender"/>
   </root>

</log4j:configuration>
29
duffymo

Voici un exemple d'exemple de log4j.xml utilisé dans le projet Hibernate.Juste besoin de placer ce fichier dans classpath et vous obtiendrez des messages de journal sur la console ainsi que dans le fichier également.Si vous voulez un appender spécifique, vous pouvez changer de balise.

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
<log4j:configuration xmlns:log4j="http://jakarta.Apache.org/log4j/"  
    debug="false">  
<appender name="CONSOLE" class="org.Apache.log4j.ConsoleAppender">  
 <layout class="org.Apache.log4j.PatternLayout">  
  <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />  
 </layout>  
</appender>  
    <appender name="ASYNC" class="org.Apache.log4j.AsyncAppender">  
        <appender-ref ref="CONSOLE" />  
        <appender-ref ref="FILE" />  
</appender>  
<appender name="FILE" class="org.Apache.log4j.RollingFileAppender">  
    <param name="File" value="C:/hibernatelog.log"/>  
    <param name="MaxBackupIndex" value="100" />  
 <layout class="org.Apache.log4j.PatternLayout">  
  <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" />  
</layout>  
</appender>  
    <category name="org.hibernate">  
        <priority value="DEBUG" />  
    </category>  
    <category name="Java.sql">  
        <priority value="debug" />  
    </category>  
    <root>  
        <priority value="INFO" />  
        <appender-ref ref="ASYNC" />  
    </root>  
</log4j:configuration>  

J'ai trouvé celui-ci plus descriptif que ci-dessus. J'espère que cela vous aidera.

6
Ravi Kant

La chose typique à faire est de placer un fichier log4j.properties dans votre chemin de classe. Le doc log4j vous dira tout ce que vous devez savoir sur le fait d'avoir deux appender pour la console et un fichier, c'est dans leurs exemples. En d'autres termes, ne vous embêtez pas avec le format XML moins courant et restez avec le format de propriétés très courant.

0
bmargulies