Log4j2日志使用及XML配置说明

7 篇文章 0 订阅
1 篇文章 0 订阅

一、日志输出格式说明

  1. yml配置输出级别及输出格式(没有xml配置时可以自行配置pattern规则):

    logging:
      level:
        com.it.*: debug
      pattern:
        console: "%d{yyyy-MM-dd HH:mm:ss} %clr(%-5level) [%magenta(${spring.application.name})] --- %cyan(%-30.30logger{0}) : %m%n"  
    
  2. pattern语法说明:

  • %d{yyyy-MM-dd HH:mm:ss}:日志输出时间的格式;
  • %clr() :日志输出字体颜色,日志级别不同,颜色也不同;
  • %cyan():日志输出字体颜色为青色;
  • %magenta() :日志输出字体颜色为紫色(品红色);
  • %t%thread :线程名称;
  • %-5level%-5 指占用五个字符,左对齐。level 指的是日志输出级别,分为 TRACE < DEBUG < INFO < WARN < ERROR < FATAL
  • %-30.30:总字符30个长度,超出截取,不够则空格补齐。点号前面加减号 - ,表示从前面截断。点号后面加减号 - ,表示从尾部截断;
  • logger{0} :执行的方法全类名,可以有一个整形参数,用于缩短日志记录器的包名。设置为0表示只输入logger最右边点符号之后的字符串;
  • %m%msg:日志输出的信息;
  • %n:末尾换行;

二、Log4j2的使用

  1. 引入依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    
  2. 排除默认的日志依赖 LogBack,主要是 spring-boot-starter-logging

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  3. 配置文件yaml修改:

    logging:
      config:  classpath:log4j2.xml
    
  4. 添加XML配置文件 log4j2.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration status="error" monitorInterval="10">
        <properties>
            <property name="LOG_HOME">./logs</property>
            <property name="PATTERN_LAYOUT_CONSOLE">%d{yyyy-MM-dd HH:mm:ss.SSS} %5p: --- [%15.15t] %-40.40logger{39} : %m%n</property>
            <property name="PATTERN_LAYOUT_CONSOLE_ROOT">%d{yyyy-MM-dd HH:mm:ss.SSS} %5p --- [%15.15t] %-40.40logger{39} : %m%n</property>
            <property name="PATTERN_LAYOUT">%d{yyyy-MM-dd HH:mm:ss.SSS} %5p --- [%15.15t] %-40.40logger{39} : %m%n</property>
            <property name="SYSTEM_LEVEL">info</property>
        </properties>
        <appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout charset="utf-8">
                    <MarkerPatternSelector defaultPattern="${PATTERN_LAYOUT_CONSOLE_ROOT}">
                        <PatternMatch key="UTIL" pattern="${PATTERN_LAYOUT_CONSOLE}"/>
                    </MarkerPatternSelector>
                </PatternLayout>
            </Console>
            <RollingFile name="RollingFileSystem" fileName="${LOG_HOME}/system.log"
                         filePattern="${LOG_HOME}/$${date:yyyy-MM}/$${date:yyyy-MM-dd}/system/system-%d{yyyy-MM-dd}-%i.log.gz"
                         bufferSize="4096" immediateFlush="true" bufferedIO="true" append="true">
                <Filters>
                    <MarkerFilter marker="MESSAGE" onMatch="DENY" onMismatch="NEUTRAL"/>
                    <MarkerFilter marker="TRACE" onMatch="DENY" onMismatch="NEUTRAL"/>
                    <ThresholdFilter level="${SYSTEM_LEVEL}" onMatch="ACCEPT" onMismatch="DENY"/>
                </Filters>
                <PatternLayout charset="utf-8">
                    <MarkerPatternSelector defaultPattern="${PATTERN_LAYOUT_CONSOLE_ROOT}">
                        <PatternMatch key="UTIL" pattern="${PATTERN_LAYOUT}"/>
                    </MarkerPatternSelector>
                </PatternLayout>
                <Policies>
                    <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
                    <TimeBasedTriggeringPolicy/>
                    <SizeBasedTriggeringPolicy size="100MB"/>
                </Policies>
                <DefaultRolloverStrategy max="50">
                    <Delete basePath="${LOG_HOME}" testMode="false" maxDepth="5">
                        <IfFileName glob="*/*/system/system*.log.gz">
                            <IfLastModified age="30d">
                                <IfAny>
                                    <IfAccumulatedFileSize exceeds="5GB"/>
                                    <IfAccumulatedFileCount exceeds="1000"/>
                                </IfAny>
                            </IfLastModified>
                        </IfFileName>
                    </Delete>
                </DefaultRolloverStrategy>
            </RollingFile>
        </appenders>
        <loggers>
            <root level="${SYSTEM_LEVEL}">
                <appender-ref ref="Console"/>
                <appender-ref ref="RollingFileSystem"/>
            </root>
            <Logger name="com" level="${SYSTEM_LEVEL}" additivity="false">
                <appender-ref ref="RollingFileSystem"/>
            </Logger>
            <Logger name="com.it.mapper" level="DEBUG" additivity="false">
                <appender-ref ref="RollingFileSystem"/>
            </Logger>
        </loggers>
    </configuration>
    

三、XML配置标签说明:

  • configuration:父标签,包裹所有元素;
    • status:配置文件的日志检查级别,符合的时候会触发日志输出;
    • monitorInterval:间隔时间,每隔一段时间检查一次配置文件是否更改;
  • properties:用于声明变量,一般为声明日志存储位置,日志输出格式、日志级别等。
  • appenders:声明日志输出方式、日志位置等;
    • Console:控制台输出,target 属性为设置输出方式,SYSTEM_OUTSYSTEM_ERR ,一般设置默认 SYSTEM_OUT
      • PatternLayout:日志输出格式,引用自定义的properties变量即可;
    • RollingFile:文件滚动记录日志,可以配置限制日志文件大小和保存策略;
      • Filters:声明一组顺序执行的过滤器,依次执行,ACCEPT 表示允许写入,DENY 表示拒绝写入,NEUTRAL 表示中立,即放行到下一个过滤器;
      • MarkerFilter:声明一个标记过滤器,根据日志的标记信息判断日志的写入;
      • ThresholdFilter:声明一个阈值过滤器,根据日志级别进行判读写入;
      • Policies:指定新建日志文件的时机,日志打包策略,如定时打包、存储大小等;
      • DefaultRolloverStrategy:声明日志文件的删除策略;
  • loggers:声明日志使用哪些appender进行输出;
    • root:设置项目根目录的日志输出方式,具体使用哪个 appender
    • logger:设置具体的包的日志,可以控制某些依赖的日志;
  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风於尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值