Le Tutoriel de Java Commons Logging

View more categories:

1- Qu'est-ce que Commons Logging?

Dans votre application Java, vous voulez écrire un code pour enregistrer des messages de l'application pendant son fonctionnement?  Vous pouvez utiliser l'une des trois bibliothèques  Logger suivantes
  • Log4J Logger
  • Jdk14 Logger
  • Simple Logger
Commons Logging est une bibliothèque qui vous permet de travailler plus facilement avec l'une des trois bibliothèques ci-dessus. Donc, pour écrire un programme de Journal (Log), seul, il ne peut pas être un  Logger . D'une manière similaire, vous travaillez avec  java.io pour traiter le flux,  Commons IO est un ensemble bibliothèque basée sur  java.io qui vous aide à gérer plus facilement IO ,  Common IO ne pourrait pas remplacer le  java.io .
 
Donc, vous avez trois options: 
Ce que vous choisissez quel  Logger n'a pas d'importance, il est traité de la même manière avec l'aide de  Commons Logging .

2- L'objectif de la documentation

Dans ce document je vais vous guider à travailler avec:
  • Commons Logging + Log4J Logger

3- Commons Logging + Log4J Logger

3.1- Bibliothèque(Library)

 Bibliothèque  Commons Logging:
Maven:
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.3</version>
</dependency>
 Bibliothèque  Log4J Logger:
Maven:
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

3.2- Créer project

pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0%20http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.o7planning</groupId>
   <artifactId>CommonsLoggingTutorial</artifactId>
   <version>0.0.1-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-logging</groupId>
           <artifactId>commons-logging</artifactId>
           <version>1.1.3</version>
       </dependency>
       <dependency>
           <groupId>log4j</groupId>
           <artifactId>log4j</artifactId>
           <version>1.2.17</version>
       </dependency>
   </dependencies>
   
</project>

3.3- Un exemple simple HelloWorld (Log à l'ecran de Console)

Dans cette étape, nous allons faire un simple exemple HelloWorld, il enregistrera Log sur la console.

HelloWorld.java
package org.o7planning.tutorial.commonslogging;

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

public class HelloWorld {

   private static final Log log = LogFactory.getLog(HelloWorld.class);

   public static void main(String[] args) {
       log.debug("Example debug message ..");
       log.info("Example info message ..");
       log.warn("Example warn message ..");
       log.error("Example error message ..");
       log.fatal("Example fatal message ..");  
   }
}
commons-logging.properties
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

log4j.configuration=log4j.properties
log4j.properties
log4j.rootLogger=DEBUG, CA, NTEventLog

#Console Appender
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
En fait, vous pouvez configurer les  Commons logging pour utiliser les autres bibliothèques  Logging , pas de log4j :
Exécutez la classe  HelloWorld:
Avec Log4j, vous pouvez configurer le fichier  XML et la configuration  XML est facile et compréhensible que les propriétés.
Ouvrez le fichier  commons-logging.properties et modifier :
commons-logging.properties
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

log4j.configuration=log4j.xml
log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

   <appender name="MyConsole" class="org.apache.log4j.ConsoleAppender">
       <param name="Target" value="System.out" />
       <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
       </layout>
   </appender>



   <root>
       <priority value="debug" />
       <appender-ref ref="MyConsole" />
   </root>

</log4j:configuration>
Exécuter la classe  HelloWorld et voir le journal sur l'écran de Console :

3.4- L'exemple plus complexe (Log sorti fichier)

Ensuite, nous allons continuer avec un exemple plus complexe, écrivez le fichier journal.
AdminApplication.java
package org.o7planning.tutorial.commonslogging.admin;

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

public class AdminApplication {

   private static final Log log = LogFactory.getLog(AdminApplication.class);

   public static void main(String[] args) {
       log.debug("Example debug message ..");
       log.info("Example info message ..");
       log.warn("Example warn message ..");
       log.error("Example error message ..");
       log.fatal("Example fatal message ..");

       try {
           raiseException();
       } catch (Exception e) {
           log.fatal("<Some Object>", e);
       }
   }

   private static void raiseException() throws Exception {
       throw new Exception("Test Exception");
   }
}
FrontEndApplication.java
package org.o7planning.tutorial.commonslogging.frontend;

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

public class FrontEndApplication {

   private static final Log log = LogFactory.getLog(FrontEndApplication.class);

   public static void main(String[] args) {
       log.debug("Example debug message ..");
       log.info("Example info message ..");
       log.warn("Example warn message ..");
       log.error("Example error message ..");
       log.fatal("Example fatal message ..");
   }
}
 
Ajouter dans la configuration log4j.xml, ajoutez la configuration:
  <appender name="AdminFileAppender" class="org.apache.log4j.FileAppender">
      <param name="File" value="logs/admin.log" />
      <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern"
              value="%d{dd MMM yyyy HH:mm:ss,SSS} {%t} %-5p %c %x - %m%n" />
      </layout>
  </appender>

  <appender name="FrontEndFileAppender" class="org.apache.log4j.FileAppender">
      <param name="File" value="logs/frontEnd.log" />
      <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern"
              value="%d{dd MMM yyyy HH:mm:ss,SSS} {%t} %-5p %c %x - %m%n" />
      </layout>
  </appender>

  <!-- logger name must by package name! -->
  <logger name="org.o7planning.tutorial.commonslogging.admin">
      <level value="ERROR" />
      <appender-ref ref="AdminFileAppender" />
  </logger>

  <!-- logger name must by package name! -->
  <logger name="org.o7planning.tutorial.commonslogging.frontend">
      <level value="DEBUG" />
      <appender-ref ref="FrontEndFileAppender" />
  </logger>
log4j.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

  <appender name="MyConsole" class="org.apache.log4j.ConsoleAppender">
      <param name="Target" value="System.out" />
      <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
      </layout>
  </appender>




  <appender name="AdminFileAppender" class="org.apache.log4j.FileAppender">
      <param name="File" value="logs/admin.log" />
      <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern"
              value="%d{dd MMM yyyy HH:mm:ss,SSS} {%t} %-5p %c %x - %m%n" />
      </layout>
  </appender>

  <appender name="FrontEndFileAppender" class="org.apache.log4j.FileAppender">
      <param name="File" value="logs/frontEnd.log" />
      <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern"
              value="%d{dd MMM yyyy HH:mm:ss,SSS} {%t} %-5p %c %x - %m%n" />
      </layout>
  </appender>

  <!-- logger name must by package name! -->
  <logger name="org.o7planning.tutorial.commonslogging.admin">
      <level value="ERROR" />
      <appender-ref ref="AdminFileAppender" />
  </logger>

  <!-- logger name must by package name! -->
  <logger name="org.o7planning.tutorial.commonslogging.frontend">
      <level value="DEBUG" />
      <appender-ref ref="FrontEndFileAppender" />
  </logger>


  <root>
      <priority value="debug" />
      <appender-ref ref="MyConsole" />
  </root>

</log4j:configuration>
Il y a une note sur l'ordre des cartes lorsque vous configurez log4j.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <!-- render -->
    <renderer></renderer>
    <renderer></renderer>
    <renderer></renderer>
    
    <!-- appender -->
    <appender></appender>
    <appender></appender>
    <appender></appender>
    
    
    <!-- plugin -->
    <plugin></plugin>
    <plugin></plugin>
    <plugin></plugin>
    
    <!-- logger -->
    <logger></logger>
    <logger></logger>
    <logger></logger>
    
    <!-- category -->
    <category></category>
    <category></category>
    <category></category>
    
    <!-- root -->
    <root></root>
    <root></root>
    <root></root>
    
    <!-- loggerfactory -->
    <loggerfactory></loggerfactory>
    <loggerfactory></loggerfactory>
    <loggerfactory></loggerfactory>
    
    <!-- categoryfactory -->
    <categoryfactory></categoryfactory>
    <categoryfactory></categoryfactory>
    <categoryfactory></categoryfactory>

</log4j:configuration>
Exécuter la classe  AdminApplication:
 
Exécuter la classe  FrontEndApplication
Un dossier 'logs' a été créé et comporte deux fichiers journaux (admin.log&frontEnd.log )
 

View more categories: