【Java】log4j2-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="INFO" monitorInterval="60">

    <Properties>
        <Property name="app.name"></Property>
        <Property name="log.home">D:/logs/</Property>
        <!-- <Property name="log.pattern">[%d] [%-5p] [%t] [%c{3.}] [%l] [_] [%m]%n</Property> -->
        <Property name="log.file.charset">UTF-8</Property>
        <Property name="log.file.pattern">
            [%d] [%-5p] [%t] [%c{3.}] %m%n
        </Property>
        <Property name="log.console.charset">UTF-8</Property>
        <Property name="log.console.pattern">
            %d %highlight{%-5p} %style{%pid}{magenta} --- [%15.15t] %style{%-37.37c{36}}{cyan} : %m%n%n
        </Property>
        
    </Properties>

    <!--先定义所有的appender -->
    <appenders>
        <!-- 这个会打印出所有的info及以上级别的信息,每次大小超过size,则这size大小的日志会自动存入按年月日建立的文件夹下面并进行压缩,作为存档 -->
        <RollingFile name="FILE_INFO" immediateFlush="false"
            fileName="${log.home}${app.name}/info_${app.name}.log"
            filePattern="${log.home}${app.name}/$${date:MM}/$${date:dd}/info_${app.name}_%d{yyyyMMdd}_%i.log.gz">
            <!-- 只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <Filters>
                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL" />
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
            <PatternLayout pattern="${log.file.pattern}" charset="${log.file.charset}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <!-- 日志文件归档大小 -->
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了99 -->
            <DefaultRolloverStrategy max="99" />
        </RollingFile>
        
        <RollingFile name="FILE_WARN" immediateFlush="false"
            fileName="${log.home}${app.name}/warn_${app.name}.log"
            filePattern="${log.home}${app.name}/$${date:MM}/$${date:dd}/warn_${app.name}_%d{yyyyMMdd}_%i.log.gz">
            <Filters>
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL" />
                <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
            <PatternLayout pattern="${log.file.pattern}" charset="${log.file.charset}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <DefaultRolloverStrategy max="99" />
        </RollingFile>
        
        <RollingFile name="FILE_ERROR" immediateFlush="false"
            fileName="${log.home}${app.name}/error_${app.name}.log"
            filePattern="${log.home}${app.name}/$${date:MM}/$${date:dd}/error_${app.name}_%d{yyyyMMdd}_%i.log.gz">
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY" />
            <PatternLayout pattern="${log.file.pattern}" charset="${log.file.charset}" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <DefaultRolloverStrategy max="99" />
        </RollingFile>
        
        <!-- 控制终端输出 -->
        <Console name="STDOUT" target="SYSTEM_OUT">
            <Filters>
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY" />
            </Filters>
            <PatternLayout pattern="${log.console.pattern}" charset="${log.console.charset}" />
        </Console>
    </appenders>

    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
    <loggers>
        <!-- 配置日志的根节点 -->
        <Root level="INFO">
            <appender-ref ref="FILE_ERROR" />
            <appender-ref ref="FILE_WARN" />
            <appender-ref ref="FILE_INFO" />
            <appender-ref ref="STDOUT" />
        </Root>
        <!-- 第三方日志系统 -->
        <logger name="org.springframework.web" level="WARN"/>
        <logger name="org.springboot.sample" level="WARN" />
    </loggers>

</configuration>
原文地址:https://www.cnblogs.com/zhuzhongxing/p/14147093.html