logback 日志使用模版

2018-07-25  本文已影响0人  steamed_bun

https://logback.qos.ch/manual/index.html logback 官方文档

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 在此处定义可以使用 ${name} 在下文获取 value -->
    <property name = "LOG_HOME" value="logs"/>
    <property name="file" value="file"/>
    <property name="infoFile" value="info"/>
    <property name="errorFile" value="error"/>

    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <layout class = "ch.qos.logback.classic.PatternLayout">
            <pattern>
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %logger{50}:日志路径显示50个字符,如果显示不完则简写 %msg:日志消息,%n是换行符-->
                %d{HH:mm:ss.SSS} [%t] %-5level %logger{50} - %msg%n
            </pattern>
        </layout>
    </appender>

    <!-- 简单只是写入文件中 -->
    <appender name="${file}" class="ch.qos.logback.core.FileAppender">
        <file>
            ${LOG_HOME}/${file}.log
        </file>
        <encoder>
            <!-- %-4relative 打印出程序运行到打印日志的毫秒数,-4:与[%thread] 的距离4个字符  -->
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
     </encoder>
    </appender>

    <!-- 按照一定的规则滚动生成日志文件 -->
    <appender name="${infoFile}" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 此处若加入file 则 fileNamePattern 无用 -->
        <!--
        <file>
            ${LOG_HOME}${infoFile}.log
        </file>
        -->
        <!--
            规则:根据文件的大小和时间共同控制
            如下: 日志文件按日期记录,同一天内,若日志文件大小等于或大于5KB,则按0、1、2...顺序分别命名
            有不同的规则可以选择:
            TimeBasedRollingPolicy 只根据时间
            SizeBasedTriggeringPolicy:只根据文件大小
            ...

            每个规则的子节点不同:
            maxFileSize:每个文件最大值
            totalSizeCap:所有文件最大值
            MaxHistory:最多保留多久的日志 如下是30天内
            fileNamePattern:文件命名规则 %i从0开始自增,如果同一天的文件已经超出最大文件范围,则会生成第二个文件
            /logs/info-2018-07-24-0.log
        -->
        <rollingPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${infoFile}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <maxFileSize>5KB</maxFileSize>
            <totalSizeCap>10MB</totalSizeCap>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <!--
            分级过滤日志:LevelFilter
            如下:接受info以上的,但是不写入error
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <level>error</level>
            <onMatch>DENY</onMatch>

            如下:只接受info
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
     </encoder>
    </appender>

    <appender name="{errorFile}" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/${errorFile}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
            <maxFileSize>5KB</maxFileSize>
            <totalSizeCap>10MB</totalSizeCap>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>

    <Root level="info">
        <appender-ref ref="Console"/>
        <appender-ref ref="${file}"/>
        <appender-ref ref="${infoFile}"/>
        <appender-ref ref="{errorFile}"/>
    </Root>
</configuration>
上一篇下一篇

猜你喜欢

热点阅读