log4j2.xml配置详解

log4j2.xml配置详解

  • 1 log4j2介绍
  • 2 配置文件节点解析
  • 3 配置参数解释
    • 3.1 日志级别
    • 3.2 输出源
    • 3.3 格式
  • 4 最简配置
  • 5 模板

参考文章:
https://mp.weixin.qq.com/s/8mEU5ofwQPWA14JbtmQNrw
https://www.cnblogs.com/keeya/p/10101547.html

1 log4j2介绍

log4j2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn"。
配置文件的格式:log2j配置文件可以是xml格式的,也可以是json格式的。
配置文件的位置:log4j2默认会在classpath目录下寻找log4j2.xml、log4j.json、log4j.jsn等名称的文件。
系统选择配置文件的优先级(从先到后)如下:
  (1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的文件.
  (2).classpath下的名为log4j2-test.xml的文件.
  (3).classpath下名为log4j2.json 或者log4j2.jsn的文件.
  (4).classpath下名为log4j2.xml的文件.
  我们一般默认使用log4j2.xml进行命名。

2 配置文件节点解析

根节点Configuration
两个属性:

  • status:用来指定log4j本身的打印日志的级别
  • monitorinterval:用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s
    两个子节点:
  • Appenders
  • Loggers(表明可以定义多个Appender和Logger).

Appenders节点
常见的有三种子节点:Console、RollingFile、File
Console节点用来定义输出到控制台的Appender.

Console节点用来定义输出到控制台的Appender

  • name:指定Appender的名字.
  • target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.
  • PatternLayout:输出格式,不设置默认为:%m%n.
  • File节点用来定义输出到指定位置的文件的Appender.

File节点用来定义输出到指定位置的文件的Appender

  • name:指定Appender的名字.
  • fileName:指定输出日志的目的文件带全路径的文件名.
  • PatternLayout:输出格式,不设置默认为:%m%n.
  • RollingFile节点用来定义超过指定条件自动删除旧的创建新的Appender.

RollingFile节点用来定义超过指定条件自动删除旧的创建新的Appender

  • name:指定Appender的名字.
  • fileName:指定输出日志的目的文件带全路径的文件名.
  • PatternLayout:输出格式,不设置默认为:%m%n.
  • filePattern : 指定当发生Rolling时,文件的转移和重命名规则.
  • Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.
  • TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am…而不是7am.
  • SizeBasedTriggeringPolicy:Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小.
  • DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。

Loggers节点,常见的有两种:Root和Logger
Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出

  • level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < - AppenderRef:Root的子节点,用来指定该日志输出到哪个Appender.
  • Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。
  • level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
  • name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.
  • AppenderRef:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root.如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出

3 配置参数解释

3.1 日志级别

级别 说明
trace 追踪,就是程序推进一下,可以写个trace输出
debug 调试,一般作为最低级别,trace基本不用。
info 输出重要的信息,使用较多
warn 警告,有些信息不是错误信息,但也要给程序员一些提示。
error 错误信息。用的也很多。
fatal 致命错误

3.2 输出源

类别 说明
CONSOLE 输出到控制台
FILE 输出到文件

3.3 格式

类别 说明
SimpleLayout 以简单的形式显示
HTMLLayout 以HTML表格显示
PatternLayout 自定义形式显示

PatternLayout自定义日志布局:

格式 说明
%d{HH:mm:ss.SSS} 表示输出到毫秒的时间
%t 输出当前线程名称
%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
%logger 输出logger名称
%msg 日志文本
%n 换行
%F 输出所在的类文件名,如Log4j2Test.java
%L 输出行号
%M 输出所在方法名
%l 输出语句所在的行数, 包括类名、方法名、文件名、行数

4 最简配置


 <Configuration status="WARN">
   <Appenders>
     <Console name="Console" target="SYSTEM_OUT">
       <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
     Console>
   Appenders>
   <Loggers>
     <Root level="error">
       <AppenderRef ref="Console"/>
     Root>
   Loggers>
 Configuration>

5 模板




<configuration monitorInterval="5">
  

  
  <Properties>
    
    
    <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
    
    <property name="FILE_PATH" value="更换为你的日志路径" />
    <property name="FILE_NAME" value="更换为你的项目名" />
  Properties>

  <appenders>

    <console name="Console" target="SYSTEM_OUT">
      
      <PatternLayout pattern="${LOG_PATTERN}"/>
      
      <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
    console>

    
    <File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
      <PatternLayout pattern="${LOG_PATTERN}"/>
    File>

    
    <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
      
      <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
      <PatternLayout pattern="${LOG_PATTERN}"/>
      <Policies>
        
        <TimeBasedTriggeringPolicy interval="1"/>
        <SizeBasedTriggeringPolicy size="10MB"/>
      Policies>
      
      <DefaultRolloverStrategy max="15"/>
    RollingFile>

    
    <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
      
      <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
      <PatternLayout pattern="${LOG_PATTERN}"/>
      <Policies>
        
        <TimeBasedTriggeringPolicy interval="1"/>
        <SizeBasedTriggeringPolicy size="10MB"/>
      Policies>
      
      <DefaultRolloverStrategy max="15"/>
    RollingFile>

    
    <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
      
      <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
      <PatternLayout pattern="${LOG_PATTERN}"/>
      <Policies>
        
        <TimeBasedTriggeringPolicy interval="1"/>
        <SizeBasedTriggeringPolicy size="10MB"/>
      Policies>
      
      <DefaultRolloverStrategy max="15"/>
    RollingFile>

  appenders>

  
  
  <loggers>

    
    <logger name="org.mybatis" level="info" additivity="false">
      <AppenderRef ref="Console"/>
    logger>
    
    
    <Logger name="org.springframework" level="info" additivity="false">
      <AppenderRef ref="Console"/>
    Logger>

    <root level="info">
      <appender-ref ref="Console"/>
      <appender-ref ref="Filelog"/>
      <appender-ref ref="RollingFileInfo"/>
      <appender-ref ref="RollingFileWarn"/>
      <appender-ref ref="RollingFileError"/>
    root>
  loggers>

configuration>

你可能感兴趣的:(xml)