logback日志实战

<?xml version="1.0" encoding="UTF-8" ?>
<!--
    <configuration>
        <appender></appender>    //存在1或多个,功能指定记录输出目的地
        <root></root>            //最多存在一个,根logger
        <logger><logger>        //存在1或多个,普通logger
    </configuration>
 -->
<configuration>

    <!-- 从本地spring文件获取信息 获取项目名称 -->
    <springProperty scope="context" name="PROJECT_NAME" source="spring.application.name"/>

    <!-- 存储在文件中的打印日志 格式  -->
    <property name="FILE_PATTEN"
              value="[%level] [%date{ISO8601}] [%logger] [%thread] [%X{clientIp}] [%X{requestId}] [%X{serverIp}] [%X{X-B3-TraceId}] %msg%n"/>
    <!-- 打印在控制台文件输出格式  -->
    <property name="CONSOLE_PATTEN"
              value="[%highlight(%-5level)] [%date{ISO8601}] [%boldGreen(%logger)] [%boldYellow(%thread)] [%X{clientIp}] [%cyan(%X{requestId})] [%X{serverIp}] %msg%n"/>


    <!-- 日志打印在 控制台  -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_PATTEN}</pattern>
        </encoder>
    </appender>



    <!--按照文件个数 和日志文件大小进行的回收策略 每天最多保留20个 每个最大100兆,最多保留一天-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.home}/logs/${PROJECT_NAME}/${PROJECT_NAME}.log</file>
        <append>true</append>
        <!--指定日志输出级别 到不同的日志-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <!--文件超过100兆,新建一个日志文件,日志文件最多20个,每天清理一次   -->
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!--设置以文件结尾zip表示压缩   -->
            <fileNamePattern>${user.home}/logs/${PROJECT_NAME}/${PROJECT_NAME}.%i.log</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>20</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <!--日志归档大小   -->
            <maxFileSize>1kB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>${FILE_PATTEN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!--按照日志级别打印-->
    <appender name="error_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.home}/logs/${PROJECT_NAME}/error/${PROJECT_NAME}.log</file>
        <append>true</append>
        <!--指定日志输出级别 到不同的日志 可以自定义过滤器 输出 各种不同类型日志 如sql-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${user.home}/logs/${PROJECT_NAME}/${PROJECT_NAME}_error.%i.log</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>20</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>1KB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>${FILE_PATTEN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!-- 日志按天压缩归档 根据设置的保留天数自动更新-->
    <appender name="info_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${user.home}/logs/${PROJECT_NAME}/info/${PROJECT_NAME}.log</file>
        <append>true</append>
        <!--指定日志输出级别 到不同的日志 可以自定义过滤器 输出 各种不同类型日志 如sql-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 生成按编号的认知 i%代表个数-->
            <!--<fileNamePattern>${user.home}/logs/${PROJECT_NAME}/info/${PROJECT_NAME}-%d{yyyy-MM-dd}.%i.log-->
            <fileNamePattern>${user.home}/logs/${PROJECT_NAME}/info/${PROJECT_NAME}-%d{yyyy-MM-dd}.%i.log.zip
            </fileNamePattern>
            <!-- 日志多大进行归档-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- 保留的天数  -->
            <MaxHistory>2</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${FILE_PATTEN}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>



   <!--指定打印到什么环境日志 设置打印日志级别 到控制台 和文件-->
    <springProfile name="test">
        <root level="DEBUG">
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
            <appender-ref ref="error_file"></appender-ref>
            <appender-ref ref="info_file"></appender-ref>
        </root>
    </springProfile>





</configuration>

 

posted @ 2020-04-13 17:04  liuxw666  阅读(413)  评论(0编辑  收藏  举报