Le Tutoriel de Java Commons Logging
View more Tutorials:


Dans votre application Java, voulez vous écrire un code d'enregistrement 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 au-dessus. Donc, pour écrire un programme de Log, il ne peut pas être un Logger. De même manière que vous travaillez avec java.io pour traiter des données, Commons IO qui est un ensemble des bibliothèques basé sur java.io vous aide à gérer plus facilement IO, Common IO ne pourrait pas remplacer le java.io .
Donc, vous avez trois choix :

Le choix de Logger n'est pas important car Logger est traité de la même manière avec le soutient de Commons Logging.
Dans ce document, je vais vous donner des instructions pour travailler avec :
- Commons Logging + Log4J Logger
Bibliothèque Commons Logging populaires :

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>



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 http://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>
Dans cette étape, nous allons faire un exemple HelloWorld simple, 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 un 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 plus facile et plus compréhensible que celle des properties.

Ouvrez le fichier commons-logging.properties et modifiez :
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écutez la classe HelloWorld et voyez le Log sur l'écran de Console :

Ensuite, nous allons continuer avec un exemple plus complexe, écrivez Log sur fichier.

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 ..");
}
}
Continuez à configurer log4j.xml, ajoutez l'extrait de 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 étiquettes 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écutez la classe AdminApplication :

Exécutez la classe FrontEndApplication

Un dossier 'logs' a été créé et comporte deux fichiers Log (admin.log&frontEnd.log)
