1. Avant-propos
log4j est un framework de journalisation (API) fiable, rapide et flexible écrit en Java, publié sous la licence logicielle Apache. Log4j a été porté sur des langages tels que C, C++, C#, Perl, Python et Ruby.
Log4j est hautement configurable et peut être configuré via des fichiers externes au moment de l'exécution. Il donne la priorité à la journalisation et fournit des mécanismes pour diriger les informations de journalisation vers de nombreuses destinations, telles que les bases de données, les fichiers, les consoles, les journaux système UNIX, etc.
Il y a trois composants principaux dans Log4j :
Loggers : responsables de la capture des informations de journalisation.
appenders : responsables de la publication des informations du journal vers différentes destinations préférées.
mises en page : responsable du formatage des informations du journal dans différents styles.
Remarque : cet article est basé sur log4j 2.X et supérieur.
2. Installer
log4j-core-xx.jar
log4j-api-xx.jar
log4j-web -xx.jar (référence obligatoire pour les projets web)
3. Configuration
Préparez quelques classes de log et ajoutez les références suivantes :
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;
static Logger logger = LogManager.getLogger(Test.class.getName());
Fichier de configuration location Situé dans le répertoire racine : src, aucune erreur ne sera signalée même s'il n'y a pas de fichier de configuration, et la sortie est sous forme de console par défaut.
Le fichier de configuration log4j2 est très différent de log4 (1. ) :
<?xml version="1.0" encoding="UTF-8"?> <configuration status="error"> <!--先定义所有的appender--> <appenders> <!--这个输出控制台的配置--> <Console name="Console" target="SYSTEM_OUT"> <!--这个是输出日志的格式--> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </Console> <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用--> <File name="Error" fileName="${web:rootDir}/logs/error.log" append="false"> <!--文件只记录level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout charset="UTF-8" pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File> <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--> <RollingFile name="RollingFile" fileName="${web:rootDir}/logs/history.log" filePattern="log/$${date:yyyy-MM}/history-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout charset="UTF-8" pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/> <SizeBasedTriggeringPolicy size="50MB"/> </RollingFile> </appenders> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--> <loggers> <!--建立一个默认的root的logger--> <root level="trace"> <appender-ref ref="Error"/> <appender-ref ref="RollingFile"/> <appender-ref ref="Console"/> </root> </loggers> </configuration>
4. Projets ordinaires et projets web
Pour les projets ordinaires, il peut être utilisé. normalement une fois la configuration ci-dessus terminée. Pour les projets Web, il ne sera pas généré. Vous devez ajouter la configuration suivante sous le nœud racine de
<!-- log4j2.x start --> <listener> <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class> </listener> <filter> <filter-name>log4jServletFilter</filter-name> <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class> </filter> <filter-mapping> <filter-name>log4jServletFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- log4j2.x end -->