Maison > Java > javaDidacticiel > le corps du texte

Comment utiliser log4j pour enregistrer des journaux en Java

高洛峰
Libérer: 2017-01-18 11:54:23
original
1887 Les gens l'ont consulté

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;
Copier après la connexion
static Logger logger = LogManager.getLogger(Test.class.getName());
Copier après la connexion

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 &#39;at&#39; 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>
Copier après la connexion

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 dans le Web. Le contenu de cet article peut être utile à l'étude ou au travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. . Merci pour votre soutien au site Web PHP chinois.

<!-- 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 -->
Copier après la connexion
Pour plus d'articles sur la façon d'utiliser log4j pour enregistrer des journaux sous Java, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!