logback的xml配置文件模板(超詳細)


<?xml version="1.0" encoding="UTF-8" ?>
<!-- 在此未說明屬性為非必須的,那就表示屬性必須設置 -->
<!-- *****************最小配置文件結構介紹******************************* -->
<!-- 
    <configuration>    
        <appender></appender>    //存在1或多個,功能指定記錄輸出目的地
        <root></root>            //最多存在一個,根logger
        <logger><logger>        //存在1或多個,普通logger
    </configuration>
 -->
<!-- *************************各個標簽詳細介紹********************************** -->

<!-- debug(非必須)屬性:true表示輸出logback內部的日志信息(不影響配置和級別) ;
     scan(非必須)屬性:默認為false,true表示掃描配置文件的變化並自動重新配置,默認每隔1分鍾掃描一次;
     scanPeriod(非必須)屬性:搭配scan屬性使用,設置掃描的間隔時間
-->
<configuration debug="true" scan="true" scanPeriod="1 seconds">
    <!-- 用於指定logger上下文名稱,默認為default -->
    <contextName>logback</contextName>
    
    <!-- 設置變量FILE_PATH,用於指定名為FILE的appender的目的文件存放的目錄 -->
    <property name="FILE_PATH" value="D:/"></property>
    <!-- 
        **********************配置TurboFilter類型的過濾器**********************************
        TurboFilter類型過濾器有三種:這里使用的是DuplicateMessageFilter
            子標簽<cacheSize>:表示內部緩存對舊消息引用的個數上限
            子標簽<allowedRepetitions>:表示允許消息出現的重復次數上限,超過次數上限的記錄請求將被丟棄
    -->
    <!-- 使用自定義的TurboFilter -->
    <turboFilter class="logback.SampleTurboFilter">
    </turboFilter>
    <!-- 使用DuplicateTurboFilter -->
    <turboFilter class="ch.qos.logback.classic.turbo.DuplicateMessageFilter">
        <allowedRepetitions>1</allowedRepetitions>
        <cacheSize>20</cacheSize>
    </turboFilter>
    
    <!-- ************************常用的Appender************************************** -->
    <!-- 
        <appender>標簽包含2個屬性:name、class
        name屬性:指定appender名稱;class屬性:指定目的地類型 (比如ConsoleAppender、FileAppender等)
        class屬性的值決定了<appender>標簽包含的子標簽的種類。
        -->
    <!-- 該appender的功能是將記錄信息以特定格式寫到控制台 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--encoder:將事件轉換為字符串
            默認配置為PatternLayoutEncoder類 
            encoder用於替代Layout,encoder擴展了Layout功能
            Layout功能:只負責把事件轉換為字符串,但是不能指定何時將記錄寫入到指定目的地
            encoder功能:即負責把事件轉換為字符串,也可以指定何時將記錄寫入到指定目的地
         -->
        <encoder>
            <!-- 指定輸出格式
                %d{} :表示時間
                %thread:請求記錄所在的線程名
                %-5level:用5位顯示請求級別
                %logger{36}:輸出logger名,{36}表示logger名最大占用的字符位數,{0}表示最簡短logger名(不包含包名)。
             -->
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern>
        </encoder>
    </appender>
    <!-- 該appender的功能是將記錄信息以特定格式寫到文件 -->
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <!-- $使用變量FILE_PATH的格式,類似Linux中使用的格式:${FILE_PATH} -->
        <file>${FILE_PATH}/file.log</file>
        <encoder>
            <!-- 指定輸出格式 -->
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern>
        </encoder>
    </appender>
    <!-- 
        ***********************以最小窗體為指定的滾動規則的appender*****************************
        RollingFileAppender類型的appender中必須包含4個子標簽:<file>、<rollingPolicy>、<triggerPolicy>、<encoder>
        <rollingPolicy>標簽用於指定滾動規則,該標簽有一個屬性class:用於指定實現具體的滾動規則的類。
        <triggerPolicy>標簽用於指定發生滾動的條件,該標簽有一個屬性class:用於指定具體滾動條件的類。
        <rollingPolicy>和<triggerPolicy>中具體包含哪些子標簽是由class屬性指定的類來決定的,因為不同的類有不同的參數,從而需要不同的標簽來傳參
     -->
     <!-- 該appender的功能是將記錄信息以特定格式寫到文件,當文件達到20MB時,創建以特定規則新的 文件,之后的記錄會寫到新文件-->
    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 在第一次觸發滾動之前記錄將會寫到該文件中 -->
        <file>${FILE_PATH}/rolling.log</file>
        <!-- 
            前提條件:class的值為FixedWindowRollingPolicy,表示以最小窗體為指定的滾動規則
            RollingPolicy標簽必須子標簽:<fileNamePattern>、<minIndex>、<maxIndex>
            <fileNamePattern>:表示滾動條件達到后,創建文件名的規則,其中"%i"代表數字1~5。第一次觸發條件,創建文件rolling1.log,並且記錄開始寫到這個文件中
             <minIndex>與<maxIndex>共同決定了文件的個數
         -->
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${FILE_PATH}/rolling%i.log</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>5</maxIndex>
        </rollingPolicy>
        <!-- 
            <triggeringPolicy>功能:用於限制文件大小
            前提條件:class的值為SizeBasedTriggeringPolicy,表示以文件大小為觸發條件
            只有一個子標簽<maxFileSize>用於指定觸發條件
         -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>20MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern>
        </encoder>
    </appender>
    <!-- 
    *****************************根據時間滾動 為滾動規則和條件的appender(最常用)***********************
    -->
    <!-- 該appender的功能:將記錄信息以特定格式寫到文件,當文件達到20MB時,創建以時間為特定規則新的 文件,之后的記錄會寫到新文件,
    文件個數最多維持10個,文件達到10個 后刪除舊的文件-->
    <appender name="time_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- TimeBasedRollingPolicy實現了RollingPolicy與TriggeringPolicy,
            因此只需要<rollingPolicy>標簽,不需要<TriggeringPolicy>標簽
            <rollingPolicy>標簽有兩個子標簽:<fileNamePattern>、<maxHistory>
            <fileNamePattern>:用於指定文件名命名規則
            <maxHistory>:保留文件的個數,超過了就刪除創建時間最久的文件
         -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 文件名 -->
            <fileNamePattern>${FILE_PATH}/java_log/test%d{yyyy-MM-dd_HH-mm}.log</fileNamePattern>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern>
        </encoder>
    </appender>
    <!-- 
        ***********************常規級別過濾器的使用****************************************
        本配置功能:過濾並接受請求級別為debug的請求,對於其他級別請求一律丟棄。
     -->
    <appender name="level_console" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern>
        </encoder>
    </appender>
    <!-- 
        ***********************常規臨界值濾器的使用****************************************
        本配置功能:請求級別高於或等於info的請求響應NEUTRAL(進入下一個環節),低於info的級別請求響應DENY(表示丟棄)。
     -->
    <appender name="threshold_console" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>info</level>
        </filter>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} -%msg%n</pattern>
        </encoder>
    </appender>
    <!-- appender的目的地為mysql數據庫 -->
    <appender name="jdbc" class="ch.qos.logback.classic.db.DBAppender">
        <!-- 這里只使用jdbc中的DriverManager獲得連接,不使用任何數據源 -->
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
                <driverClass>com.mysql.jdbc.Driver</driverClass>
                <url>jdbc:mysql://localhost:3306/logback?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=UTC</url>
                <user>root</user>
                <password>Zp970321</password>
        </connectionSource>
    </appender>
    <!-- ******以下DBAppender類型的appender的目的地為mysql數據庫******** -->
<appender name="c3p0_datasource" class="ch.qos.logback.classic.db.DBAppender"> <!-- 這里使用DataSource獲得連接--> <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> <!-- 實現DataSource的數據庫連接池有很多,比如DBCP、c3p0、Druid等 這里使用的是c3p0 --> <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"> <user>root</user> <password>Zp970321</password> <driverClass>com.mysql.jdbc.Driver</driverClass> <jdbcUrl>jdbc:mysql://localhost:3306/logback?useUnicode=true&amp;characterEncoding=utf8</jdbcUrl> </dataSource> </connectionSource> </appender> <appender name="Druid_datasource" class="ch.qos.logback.classic.db.DBAppender"> <!-- 這里使用DataSource獲得連接--> <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> <!-- 實現DataSource的數據庫連接池有很多,比如DBCP、c3p0、Druid等 這里使用的是Druid --> <dataSource class="com.alibaba.druid.pool.DruidDataSource"> <username>root</username> <password>Zp970321</password> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <url>jdbc:mysql://localhost:3306/logback?useUnicode=true&amp;characterEncoding=utf8</url> </dataSource> </connectionSource> </appender> <appender name="dbcp_datasource" class="ch.qos.logback.classic.db.DBAppender"> <!-- 這里使用DataSource獲得連接--> <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> <!-- 實現DataSource的數據庫連接池有很多,比如DBCP、c3p0、Druid等 這里使用的是dbcp --> <dataSource class="org.apache.commons.dbcp.BasicDataSource"> <username>root</username> <password>Zp970321</password> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <url>jdbc:mysql://localhost:3306/logback?useUnicode=true&amp;characterEncoding=utf8</url> </dataSource> </connectionSource> </appender> <!-- level屬性:指定根logger的分配級別 --> <root level="debug"> <!-- ref屬性:指定根logger關聯的appender --> <appender-ref ref="STDOUT"></appender-ref> </root> <!-- name:指定logger名稱;level:指定logger的分配級別;additivity(非必須,默認為true):設置appender疊加性 --> <logger name="demo" level="debug" additivity="false"> <appender-ref ref="FILE"></appender-ref> </logger> <logger name="demo2" level="debug"> <appender-ref ref="rollingFile"></appender-ref> </logger> <logger name="demo3" level="debug"> <appender-ref ref="time_file"></appender-ref> </logger> <logger name="demo4" level="debug" additivity="false"> <appender-ref ref="level_console"></appender-ref> </logger> <logger name="demo5" level="debug" additivity="false"> <appender-ref ref="threshold_console"></appender-ref> </logger> <logger name="demo6" level="debug" additivity="false"> <appender-ref ref="jdbc"></appender-ref> </logger> <logger name="demo7" level="debug" additivity="false"> <appender-ref ref="c3p0_datasource"></appender-ref> </logger> <logger name="demo8" level="debug" additivity="false"> <appender-ref ref="Druid_datasource"></appender-ref> </logger> <logger name="demo9" level="debug" additivity="false"> <appender-ref ref="dbcp_datasource"></appender-ref> </logger> </configuration>

 上述的所有appender與filter都試驗過,所以可以保證正確性,如果有不懂的可以跳轉到我的博客https://www.cnblogs.com/z-x-p/

里面有很詳細的講解。


免責聲明!

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



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