- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- -scan:當此屬性設置爲true時,配置文件如果發生改變,將會被重新加載,默認值爲true
- -scanPeriod:設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。
- - 當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘
- -debug:當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false。
- -
- - configuration 子節點爲 appender、logger、root
- -->
- <configuration scan="true" scanPeriod="60 second" debug="false">
- <!-- 負責寫日誌,控制檯日誌 -->
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
- <!-- 一是把日誌信息轉換成字節數組,二是把字節數組寫入到輸出流 -->
- <encoder>
- <Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%5level] [%thread] %logger{0} %msg%n</Pattern>
- <charset>UTF-8</charset>
- </encoder>
- </appender>
- <!-- 文件日誌 -->
- <appender name="DEBUG" class="ch.qos.logback.core.FileAppender">
- <file>debug.log</file>
- <!-- append: true,日誌被追加到文件結尾; false,清空現存文件;默認是true -->
- <append>true</append>
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <!-- LevelFilter: 級別過濾器,根據日誌級別進行過濾 -->
- <level>DEBUG</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- <encoder>
- <Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%5level] [%thread] %logger{0} %msg%n</Pattern>
- <charset>UTF-8</charset>
- </encoder>
- </appender>
- <!-- 滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其他文件 -->
- <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <File>info.log</File>
- <!-- ThresholdFilter:臨界值過濾器,過濾掉 TRACE 和 DEBUG 級別的日誌 -->
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- <encoder>
- <Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%5level] [%thread] %logger{0} %msg%n</Pattern>
- <charset>UTF-8</charset>
- </encoder>
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <!-- 每天生成一個日誌文件,保存30天的日誌文件
- - 如果隔一段時間沒有輸出日誌,前面過期的日誌不會被刪除,只有再重新打印日誌的時候,會觸發刪除過期日誌的操作。
- -->
- <fileNamePattern>info.%d{yyyy-MM-dd}.log</fileNamePattern>
- <maxHistory>30</maxHistory>
- <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
- <maxFileSize>100MB</maxFileSize>
- </TimeBasedFileNamingAndTriggeringPolicy>
- </rollingPolicy>
- </appender >
- <!--<!– 異常日誌輸出 –>-->
- <!--<appender name="EXCEPTION" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
- <!--<file>exception.log</file>-->
- <!--<!– 求值過濾器,評估、鑑別日誌是否符合指定條件. 需要額外的兩個JAR包,commons-compiler.jar和janino.jar –>-->
- <!--<filter class="ch.qos.logback.core.filter.EvaluatorFilter">-->
- <!--<!– 默認爲 ch.qos.logback.classic.boolex.JaninoEventEvaluator –>-->
- <!--<evaluator>-->
- <!--<!– 過濾掉所有日誌消息中不包含"Exception"字符串的日誌 –>-->
- <!--<expression>return message.contains("Exception");</expression>-->
- <!--</evaluator>-->
- <!--<OnMatch>ACCEPT</OnMatch>-->
- <!--<OnMismatch>DENY</OnMismatch>-->
- <!--</filter>-->
- <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
- <!--<!– 觸發節點,按固定文件大小生成,超過5M,生成新的日誌文件 –>-->
- <!--<maxFileSize>5MB</maxFileSize>-->
- <!--</triggeringPolicy>-->
- <!--</appender>-->
- <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>error.log</file>
- <encoder>
- <Pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%5level] [%thread] %logger{0} %msg%n</Pattern>
- <charset>UTF-8</charset>
- </encoder>
- <!-- 按照固定窗口模式生成日誌文件,當文件大於20MB時,生成新的日誌文件。
- - 窗口大小是1到3,當保存了3個歸檔文件後,將覆蓋最早的日誌。
- - 可以指定文件壓縮選項
- -->
- <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
- <fileNamePattern>error.%d{yyyy-MM}(%i).log.zip</fileNamePattern>
- <minIndex>1</minIndex>
- <maxIndex>3</maxIndex>
- <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
- <maxFileSize>100MB</maxFileSize>
- </timeBasedFileNamingAndTriggeringPolicy>
- <maxHistory>30</maxHistory>
- </rollingPolicy>
- </appender>
- <!-- 異步輸出 -->
- <appender name ="ASYNC" class= "ch.qos.logback.classic.AsyncAppender">
- <!-- 不丟失日誌.默認的,如果隊列的80%已滿,則會丟棄TRACT、DEBUG、INFO級別的日誌 -->
- <discardingThreshold >0</discardingThreshold>
- <!-- 更改默認的隊列的深度,該值會影響性能.默認值爲256 -->
- <queueSize>512</queueSize>
- <!-- 添加附加的appender,最多隻能添加一個 -->
- <appender-ref ref ="ERROR"/>
- </appender>
- <!--
- - 1.name:包名或類名,用來指定受此loger約束的某一個包或者具體的某一個類
- - 2.未設置打印級別,所以繼承他的上級<root>的日誌級別“DEBUG”
- - 3.未設置addtivity,默認爲true,將此loger的打印信息向上級傳遞;
- - 4.未設置appender,此loger本身不打印任何信息,級別爲“DEBUG”及大於“DEBUG”的日誌信息傳遞給root,
- - root接到下級傳遞的信息,交給已經配置好的名爲“STDOUT”的appender處理,“STDOUT”appender將信息打印到控制檯;
- -->
- <logger name="ch.qos.logback" />
- <!--
- - 1.將級別爲“INFO”及大於“INFO”的日誌信息交給此loger指定的名爲“STDOUT”的appender處理,在控制檯中打出日誌,
- - 不再向次loger的上級 <logger name="logback"/> 傳遞打印信息
- - 2.level:設置打印級別(TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF),還有一個特俗值INHERITED或者同義詞NULL,代表強制執行上級的級別。
- - 如果未設置此屬性,那麼當前loger將會繼承上級的級別。
- - 3.additivity:爲false,表示此loger的打印信息不再向上級傳遞,如果設置爲true,會打印兩次
- - 4.appender-ref:指定了名字爲"STDOUT"的appender。
- -->
- <logger name="com.weizhi.common.LogMain" level="INFO" additivity="false">
- <appender-ref ref="STDOUT"/>
- <!--<appender-ref ref="DEBUG"/>-->
- <!--<appender-ref ref="EXCEPTION"/>-->
- <!--<appender-ref ref="INFO"/>-->
- <!--<appender-ref ref="ERROR"/>-->
- <appender-ref ref="ASYNC"/>
- </logger>
- <!--
- - 根logger
- - level:設置打印級別,大小寫無關:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能設置爲INHERITED或者同義詞NULL。
- - 默認是DEBUG。
- -appender-ref:可以包含零個或多個<appender-ref>元素,標識這個appender將會添加到這個loger
- -->
- <root level="DEBUG">
- <appender-ref ref="STDOUT"/>
- <!--<appender-ref ref="DEBUG"/>-->
- <!--<appender-ref ref="EXCEPTION"/>-->
- <!--<appender-ref ref="INFO"/>-->
- <appender-ref ref="ASYNC"/>
- </root>
- </configuration>
Logback啓動日誌