log4j2 配置文件解读


1、日志相关介绍

  日志接口(slf4j):slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具体的日志框架实现配合使用,比如log4j、logback等日志框架。常用的日志框架有log4j、logback、log4j2,log4j是apache实现的一个开源日志组件;logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j的原生实现;log4j2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能比log4j 1.x提高很多,并解决了一些死锁的bug,而且配置更加简单灵活。以下以log4j2 xml配置文件为例。

2、log4j2.xml文件内容如下

<?xml version="1.0" encoding="utf-8"?>

<Configuration status="WARN" monitorInterval="10">
    
    <properties>
        
        <property name="LOG_HOME">logsproperty>
        
        <property name="FILE_NAME">adapter_service_logproperty>
    properties>
    
    <Appenders>
        
        <Console name="Console" target="SYSTEM_OUT">
            
            
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        Console>
        
        <RollingRandomAccessFile name="RollingFile"
            fileName="${LOG_HOME}/${FILE_NAME}.log"
            filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz">
            
            <PatternLayout
                pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
            
            <Policies>
                
                <TimeBasedTriggeringPolicy interval="1"  modulate="true" />
                
                <SizeBasedTriggeringPolicy size="100 MB" />
            Policies>
            
            <DefaultRolloverStrategy max="30">
                
                <Delete basePath="${LOG_HOME}/$${date:yyyy-MM}/" maxDepth="2">
                    
                    <IfFileName glob="*.log.gz" />
                    
                    <IfLastModified age="7d" />
                Delete>
            DefaultRolloverStrategy>
        RollingRandomAccessFile>
    Appenders>
 
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingFile" />
        Root>
    Loggers>
Configuration>

3、pattern格式

  • %c{参数} 或 %logger{参数} ##输出日志名称
  • %C{参数} 或 %class{参数 ##输出类型
  • %d{参数}{时区te{参数}{时区} ##输出时间
  • %F|%file ##输出文件名
  • highlight{pattern}{style} ##高亮显示
  • %l ##输出错误的完整位置
  • %L ##输出错误行号
  • %m 或 %msg 或 %message ##输出错误信息
  • %M 或 %method ##输出方法名
  • %n ##输出换行符
  • %level{参数1}{参数2}{参数3} ##输出日志的级别
  • %t 或 %thread ##创建logging事件的线程名

  pattern对齐修饰

  • %20 —— 右对齐,不足20个字符则在信息前面用空格补足,超过20个字符则保留原信息
  • %-20 —— 左对齐,不足20个字符则在信息后面用空格补足,超过20个字符则保留原信息
  • %.30 —— 如果信息超过30个字符,则只保留最后30个字符
  • %20.30 —— 右对齐,不足20个字符则在信息前面用空格补足,超过30个字符则只保留最后30个字符
  • %-20.30 —— 左对齐,不足20个字符则在信息后面用空格补足,超过30个字符则只保留最后30个字符

参考:

http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender

https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout