优点:生成 ERROR文件夹、WARN文件夹、INFO文件夹等等

缺点:没有压缩归档的日志

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<configuration status="WARN">
    <Properties>
        <!-- 日志默认存放的位置 -->
        <property name="basePath">logs</property>
        <!-- 控制台打印和日志文件输出的日志最低级别 -->
        <property name="minLogLevel">INFO</property>
        <!-- Mapper路径,用于打印SQL到控制到 -->
        <property name="mapperPath">com.dhl.digihub.common.mapper</property>

        <!-- 日志默认切割的最小单位 -->
        <property name="everyLogSize">100MB</property>
        <!-- 同一文件夹下可以存放的日志天数 -->
        <property name="maxLogDays">30d</property>
        <!-- 同一文件夹下可以存放的日志数量,默认7个 -->
        <property name="maxLogNumber">60</property>
        <!-- 控制台默认输出格式 -->
        <property name="consolePattern">%highlight{%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5level | %t | %C.%M(%L) | %m}{DEBUG=BLUE, INFO=WHITE, WARN=YELLOW, ERROR=RED, FATAL=BG_RED}%n</property>
        <!-- 日志文件默认输出格式 -->
        <property name="logPattern">%d{yyyy-MM-dd HH:mm:ss.SSS} | %-5level | %t | %C.%M | %m%n</property>
    </Properties>

    <appenders>
        <!-- 控制台打印配置 -->
        <Console name="consolePrinting" target="SYSTEM_OUT">
            <!-- 设置输出格式,默认为:%m%n -->
            <PatternLayout pattern="${consolePattern}"/>
            <!-- 控制台打印级别,level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="${minLogLevel}" onMatch="ACCEPT" onMismatch="DENY"/>
        </Console>

        <!-- DEBUG级别日志保存配置 -->
        <Rollingfile name="debugLog" filename="${basePath}/log-debug.log" filePattern="${basePath}/debug/log-debug-%d{yyyyMMdd}-%i.log">
            <PatternLayout pattern="${logPattern}"/>
            <Filters>
                <ThresholdFilter level="INFO" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <Policies>
                <!-- 日志文件每天滚动一次 -->
                <TimeBasedTriggeringPolicy interval="1"/>
                <!-- 日志文件大于指定大小滚动一次 -->
                <SizeBasedTriggeringPolicy size="${everyLogSize}"/>
                <!-- 每天0点生成新的日志文件 -->
                <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
                <!-- 同一个文件夹日志最大数量 -->
                <DefaultRolloverStrategy max="${maxLogNumber}">
                    <!-- 日志保留策略 -->
                    <Delete basePath="${basePath}/debug/" maxDepth="1">
                        <IfFileName glob="log-debug-*.log"/>
                        <IfLastModified age="${maxLogDays}"/>
                    </Delete>
                </DefaultRolloverStrategy>
            </Policies>
        </Rollingfile>

        <!-- INFO级别日志保存配置 -->
        <Rollingfile name="infoLog" filename="${basePath}/log-info.log" filePattern="${basePath}/info/log-info-%d{yyyyMMdd}-%i.log">
            <PatternLayout pattern="${logPattern}"/>
            <Filters>
                <ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <Policies>
                <!-- 日志文件每天滚动一次 -->
                <TimeBasedTriggeringPolicy interval="1"/>
                <!-- 日志文件大于指定大小滚动一次 -->
                <SizeBasedTriggeringPolicy size="${everyLogSize}"/>
                <!-- 每天0点生成新的日志文件 -->
                <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
                <!-- 同一个文件夹日志最大数量 -->
                <DefaultRolloverStrategy max="${maxLogNumber}">
                    <!-- 日志保留策略 -->
                    <Delete basePath="${basePath}/info/" maxDepth="1">
                        <IfFileName glob="log-info-*.log"/>
                        <IfLastModified age="${maxLogDays}"/>
                    </Delete>
                </DefaultRolloverStrategy>
            </Policies>
        </Rollingfile>

        <!-- WARN级别日志保存配置 -->
        <Rollingfile name="warnLog" filename="${basePath}/log-warn.log" filePattern="${basePath}/warn/log-warn-%d{yyyyMMdd}-%i.log">
            <PatternLayout pattern="${logPattern}"/>
            <Filters>
                <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <Policies>
                <!-- 日志文件每天滚动一次 -->
                <TimeBasedTriggeringPolicy interval="1"/>
                <!-- 日志文件大于指定大小滚动一次 -->
                <SizeBasedTriggeringPolicy size="${everyLogSize}"/>
                <!-- 每天0点生成新的日志文件 -->
                <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
                <!-- 同一个文件夹日志最大数量 -->
                <DefaultRolloverStrategy max="${maxLogNumber}">
                    <!-- 日志保留策略 -->
                    <Delete basePath="${basePath}/warn/" maxDepth="1">
                        <IfFileName glob="log-warn-*.log"/>
                        <IfLastModified age="${maxLogDays}"/>
                    </Delete>
                </DefaultRolloverStrategy>
            </Policies>
        </Rollingfile>

        <!-- ERROR级别日志保存配置 -->
        <Rollingfile name="errorLog" filename="${basePath}/log-error.log" filePattern="${basePath}/error/log-error-%d{yyyyMMdd}-%i.log">
            <PatternLayout pattern="${logPattern}"/>
            <Filters>
                <ThresholdFilter level="FATAL" onMatch="DENY" onMismatch="NEUTRAL"/>
                <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <Policies>
                <!-- 日志文件每天滚动一次 -->
                <TimeBasedTriggeringPolicy interval="1"/>
                <!-- 日志文件大于指定大小滚动一次 -->
                <SizeBasedTriggeringPolicy size="${everyLogSize}"/>
                <!-- 每天0点生成新的日志文件 -->
                <CronTriggeringPolicy schedule="0 0 0 * * ?"/>
                <!-- 同一个文件夹日志最大数量 -->
                <DefaultRolloverStrategy max="${maxLogNumber}">
                    <!-- 日志保留策略 -->
                    <Delete basePath="${basePath}/error/" maxDepth="1">
                        <IfFileName glob="log-error-*.log"/>
                        <IfLastModified age="${maxLogDays}"/>
                    </Delete>
                </DefaultRolloverStrategy>
            </Policies>
        </Rollingfile>
    </appenders>

    <loggers>
        <!-- 过滤掉spring和mybatis的一些无用的DEBUG信息 -->
        <logger name="org.springframework" level="INFO"/>
        <logger name="org.mybatis" level="INFO"/>
        <!-- 设置对打印SQL语句的支持 -->
        <logger additivity="false" name="${mapperPath}" level="warn">
            <appender-ref ref="consolePrinting"/>
        </logger>
        <!-- 建立一个默认的root的logger -->
        <root level="${minLogLevel}">
            <appender-ref ref="consolePrinting"/>
            <appender-ref ref="debugLog"/>
            <appender-ref ref="infoLog"/>
            <appender-ref ref="warnLog"/>
            <appender-ref ref="errorLog"/>
        </root>
    </loggers>
</configuration>
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤