web-dev-qa-db-fra.com

Écrire un fichier journal à l'aide de org.Apache.commons.logging

J'écris une application où j'ai besoin d'écrire un journal dans un fichier en utilisant org.Apache.commons.logging bibliothèque, mais je ne sais pas par où commencer.

Quelqu'un peut-il m'aider?

Merci et meilleures salutations.

14
KhanhQuach

Essayez cet exemple, vous avez d'abord besoin de deux fichiers de propriétés comme celui-ci;

commons-logging.properties qui met dans le chemin de classe de votre application. Le contenu de ce fichier devrait ressembler à:

    org.Apache.commons.logging.Log=org.Apache.commons.logging.impl.Jdk14Logger

Vous pouvez également utiliser l'enregistreur Log4j en plus de Jdk14Logger.Et avoir besoin d'un deuxième fichier de propriétés personnalisées.Par exemple log-config.properties ressemble à ceci:

    # The following creates two handlers
    handlers=Java.util.logging.ConsoleHandler, Java.util.logging.FileHandler
    # Set the default logging level for the root logger
    .level=SEVERE
    # log level for the "com.example" package
    sample.logging.level=FINE
    # Set the default logging level
    Java.util.logging.ConsoleHandler.level=ALL
    Java.util.logging.FileHandler.level=FINE
    # Set the default formatter
    Java.util.logging.ConsoleHandler.formatter=Java.util.logging.SimpleFormatter
    Java.util.logging.FileHandler.formatter=Java.util.logging.SimpleFormatter
    # Specify the location and name of the log file
    Java.util.logging.FileHandler.pattern=D:/temp/log/test.log

Ceci est un exemple de classe de test

     public class TestLog {

     private static Log log = LogFactory.getLog(TestLog.class);
     public static void main(String[] args) {
          log.info("Testing Info Message.");
              if (log.isDebugEnabled()) {
                  log.debug("Testing Debug Message.");
          }
        }
     }

Il s'agit d'un exemple de structure de package utilisant Eclipse;

enter image description here

Et ajoutez la configuration d'édition de la classe TestLog sous VM arguments aime cela;

  -Djava.util.logging.config.file=/D:/dev/workspace/LoggingTest/bin/log-config.properties(your properties file path)

enter image description here

Et exécutez alors vous pouvez trouver votre fichier journal sous D: /temp/log/test.log

16

J'espère que cela aide ... c'est ainsi que nous avons fait dans notre projet ...

A. Incluez le pot dans votre projet.

B. Définissez log4j.xml pour la définition des enregistreurs quelque chose comme ceci ...

<log4j:configuration xmlns:log4j="http://jakarta.Apache.org/log4j/" debug="false">

    <appender name="FILE" class="org.jboss.logging.appender.RollingFileAppender">
    <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
    <param name="File" value="${jboss.server.log.dir}/server.log"/>
    <param name="Append" value="false"/>
    <param name="MaxFileSize" value="1048576KB"/>
    <param name="MaxBackupIndex" value="3"/>

 <layout class="org.Apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
 </layout>      
</appender>

<root>
   <appender-ref ref="CONSOLE"/>
   <appender-ref ref="FILE"/>
</root>

</log4j:configuration>

C. Utilisez l'enregistreur dans la classe:

import org.Apache.commons.logging.Log;
import org.Apache.commons.logging.LogFactory;

Class YourClass{
    private static Log log = LogFactory.getLog(YourClass.class);

    public void yourMethod(){
        log.info("Your Message");
    }
}

EDIT: D. Puisque nous avons un environnement JBoss AS, l'application est configurée pour lire log4j.xml comme suit (vous auriez besoin d'une configuration équivalente):

<mbean code="org.jboss.logging.Log4jService"
  name="jboss.system:type=Log4jService,service=Logging"
  xmbean-dd="resource:xmdesc/Log4jService-xmbean.xml">
  <attribute name="ConfigurationURL">resource:jboss-log4j.xml</attribute>
  <!-- Set the org.Apache.log4j.helpers.LogLog.setQuiteMode. As of log4j1.2.8
  this needs to be set to avoid a possible deadlock on exception at the
  appender level. See bug#696819.
  -->
  <attribute name="Log4jQuietMode">true</attribute>
  <!-- How frequently in seconds the ConfigurationURL is checked for changes -->
  <attribute name="RefreshPeriod">60</attribute>
</mbean>
2
SiB