logback配置文件拆分,抽取公共配置


完整的日志文件 https://www.cnblogs.com/gyjx2016/p/5900035.html

日志拆分的原因:

1、抽取公共部分統一管理

2、統一日志格式

3、方便維護

 

1、新建base-logback.xml

 

<!--定義公共配置-->
<included>
    <!--日志公共配置-->
    <!--日志格式-->
    <property name="PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %X{TRACE_ID} [%thread] %-5level %logger[%L] - %m%n"/>
    <!--日志編碼-->
    <property name="CHARSET" value="utf-8"/>
    <!--單個日志文件大小-->
    <property name="MAX_FILE_SIZE" value="10Kb"/>
    <!--日志過期時間-->
    <property name="MAX_HISTORY" value="1"/>
    <!--日志根路徑-->
    <property name="BASE_LOG_PATH" value="/data/logs"/>

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


    <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--當前日志文件名-->
        <File>${BASE_LOG_PATH}/${SERVICE_NAME}/${SERVICE_NAME}-info.log</File>
        <!--日志級別過濾-->
        <filter class="com.luna.log.filter.LogbackInfoAndDebugFilter"></filter>
        <!--日志滾動策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志歸檔文件名-->
            <fileNamePattern>${BASE_LOG_PATH}/${SERVICE_NAME}/${SERVICE_NAME}-info.log.%d{yyyy-MM-dd}.log.%i.gz
            </fileNamePattern>
            <!--按天滾動-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!--單個日志文件最大,也會滾動-->
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志存活時間,大於這個時間的日志都將會刪除-->
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <encoder>
            <!--日志格式-->
            <pattern>${PATTERN}</pattern>
            <!--日志編碼-->
            <charset>${CHARSET}</charset>
        </encoder>
    </appender>


    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${BASE_LOG_PATH}/${SERVICE_NAME}/${SERVICE_NAME}-error.log</File>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${BASE_LOG_PATH}/${SERVICE_NAME}/${SERVICE_NAME}-error.log.%d{yyyy-MM-dd}.log.%i.gz
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${PATTERN}</pattern>
            <charset>${CHARSET}</charset>
        </encoder>
    </appender>


    <!--開啟logback異步記錄日志-->
    <appender name="async-console" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="console"/>
        <includeCallerData>true</includeCallerData>
    </appender>

    <appender name="async-fileAppender" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="fileAppender"/>
        <includeCallerData>true</includeCallerData>
    </appender>

    <appender name="async-errorAppender" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="errorAppender"/>
        <includeCallerData>true</includeCallerData>
    </appender>


    <!--整個項目打印INFO 以上級別-->
    <logger name="com.luna" level="INFO">
        <appender-ref ref="async-fileAppender"/>
        <appender-ref ref="async-errorAppender"/>
    </logger>

    <!--記錄druid-sql的記錄-->
    <logger name="druid.sql.Statement" level="debug" additivity="false">
        <appender-ref ref="async-console"/>
        <appender-ref ref="async-fileAppender"/>
    </logger>
</included>

 

2、新建logback-spring.xml引用base-logback.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!--日志服務名-->
    <property scope="local" name="SERVICE_NAME" value="demo"/>

    <!--引用公共日志-->
    <include resource="base-logback.xml"/>

    <!--全局打印INFO 級別日志-->
    <root level="INFO">
        <appender-ref ref="async-console"/>
    </root>

</configuration>

 

因為我的項目是springboot構建,所以命名logback-spring.xml,這種命名可以使用spring標簽


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM