Java | Logback的使用配置

參考文章:

https://www.cnblogs.com/warking/p/5710303.html

下面是自己項目中的配置,做個記錄

<!-- 日志相關(guān)包 -->
<!-- Slf4j log interface -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j-version}</version>
</dependency>

<!-- commons-logging translate to slf4j -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j-version}</version>
</dependency>

<!-- User logback as log output actuator -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>${logback-version}</version>
</dependency>
<configuration>
    <!-- 獲取時間戳字符串并格式化 -->
    <timestamp key="LOG_TIME" datePattern="yyyy-MM-dd"/>
    <!-- property 用于定義變量值  通過${name} 可以用于上下文中 -->
    <property name="WEB_NAME" value="Xp02" />
    <property name="LOG_PATH" value="日志文件輸出路徑" />
    <property name="MAX_HISTORY" value="30"/>
    <property name="MAX_SIZE" value="100MB"/>
    <property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}][%thread][%level][%logger][%L]%msg%n" />

    <!-- 設(shè)置上下文名稱 -->
    <contextName>${WEB_NAME}</contextName>
    
    <!--  ConsoleAppender 輸出日志到控制臺 -->
    <!--   encoder 對日志進行格式化  -->
    <!--   target 字符串system.out或者system.err  -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
        <encoder charset="UTF-8"> 
            <pattern>${LOG_PATTERN}</pattern> 
        </encoder> 
        <target>System.out</target>
   </appender> 
    
    <!-- appender 寫日志的組件 -->
    <!--  LevelFilter 級別過濾器 -->
    <!--    onMatch 符合過濾條件 -->
    <!--    onMismatch 不符合過濾條件 -->
    <!--  RollingFileAppender 滾動記錄日志文件 -->
    <!--    file 文件名 -->
    <!--    true 追加到文件結(jié)尾, false 清空文件內(nèi)容 -->
    <!--    TimeBasedRollingPolicy 常用的果凍策略,根據(jù)時間定制滾動策略 -->
    <!--    fileNamePattern 必要節(jié)點, 包含文件名和時間,以及制定時間格式 -->
    <!--    maxHistory 可選節(jié)點,控制保留的文件最大數(shù)量,超出就刪除舊文件 -->
    <!--    maxFileSize 設(shè)置文件的大小 -->
    <!--    rollingPolicy 日志分包策略 -->
    <!--    TimeBasedRollingPolicy 基于時間的分包策略 -->
    <!--    fileNamePattern 根據(jù)此節(jié)點設(shè)置的時間進行分包 -->
    <appender name="SYS_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/system-info.log</file>
        <append>true</append>
        <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">
            <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/system-info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="SYS_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/system-error.log</file>
        <append>true</append>
        <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.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/system-error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="WEB_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/web-info.log</file>
        <append>true</append>
        <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">
            <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/app-info.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="WEB_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/web-error.log</file>
        <append>true</append>
        <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.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/app-error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${MAX_SIZE}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <encoder charset="UTF-8">
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- logger 用來設(shè)置某一個包或具體的某一個類的日志打印級別 -->
    <!-- name 用來指定受此loger約束的某一個包或者具體的某一個類  -->
    <!-- level 設(shè)置打印級別 -->
    <logger name="包名" level="INFO" additivity="false">
        <appender-ref ref="WEB_INFO"/>
        <appender-ref ref="WEB_ERROR"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="SYS_INFO"/>
        <appender-ref ref="SYS_ERROR"/>
    </root>
</configuration>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容