1. 程式人生 > >logback常見配置

logback常見配置

trac accep and tab 日誌級別 depend 單個 最大 mis

依賴jar包
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.1.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic 
--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.7</version> </dependency>
logback配置文件加載,根據以下步驟尋找配置文件: 1. 在 classpath 中尋找 logback-test.xml文件 2.如果找不到 logback-test.xml,則在 classpath 中尋找 logback.groovy 文件 3.如果找不到 logback.groovy,則在 classpath 中尋找 logback.xml文件 日誌級別
從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設置為WARN,則低於WARN的信息都不會輸出。 Appender 為日誌輸出目的地,常用的幾種如下: ch.qos.logback.core.ConsoleAppender:把日誌添加到控制臺 ch.qos.logback.core.FileAppender:把日誌添加到文件 ch.qos.logback.core.rolling.RollingFileAppender:滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其他文件。rollingPolicy告知當發生滾動時,決定 RollingFileAppender 的行為。rollingPolicy有TimeBasedRollingPolicy: 最常用的滾動策略,它根據時間來制定滾動策略;SizeAndTimeBasedRollingPolicy :有時候你不僅想通過時間來規定滾動策略,還希望同時限制每個日誌文件的大小就用它了。triggeringPolicy:告知 RollingFileAppender 激活滾動。triggeringPolicy中SizeBasedTriggeringPolicy: 查看當前活動文件的大小,如果超過指定大小會告知激活滾動 pattern
控制輸出的內容 %c,%c{參數},%C{參數},%class{參數},%lo{參數},%logger{參數}:輸出類名稱
%c org.apache.com.te.Foo org.apache.com.te.Foo
%c{1} org.apache.com.te.Foo Foo
%c{2} org.apache.com.te.Foo te.Foo
%c{1.} org.apache.com.te.Foo o.a.c.t.Foo
%c{1.1.!} org.apache.com.te.Foo o.a.!.!.Foo
%c{.} org.apache.com.te.Foo ….Foo
%d{參數},%date{參數}:輸出時間。參數可以是text.SimpleDateFormat字符拼接而成,也可以使用系統默認
%d 2006-10-20 14:06:49,812
%date 2006-10-20 14:06:49,812
%date{ISO8601} 2006-10-20 14:06:49,812
%date{HH:mm:ss.SSS} 14:06:49.812
%date{dd MMM yyyy ;HH:mm:ss.SSS} 20 oct. 2006;14:06:49.812
%L,%line:輸出執行日誌請求的行號。盡量避免使用,除非執行速度不造成任何問題。 %m或%msg或%message:輸出日誌信息 %M或%method:輸出方法名 %p,%le,%level:輸出日誌級別 %t,%thread:輸出產生日誌的線程名。 logback.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>    
<configuration>  
     
    <!-- 引入配置文件中的變量 logback.properties 定義了一個值log_path-->
    <property resource="logback.properties" />
      
    <!-- 自己聲明一個變量 -->
    <!-- <property name="log_path" value="${catalina.home}" /> -->
     
     
    <!-- 控制臺輸出 -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
     
    <!-- 按分鐘時間滾動輸出 level為 INFO 日誌 -->
    <appender name="file—debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${log_path}/logs/debug.log</File>
        <!--控制臺只輸出level級別的信息(onMatch),其他的直接拒絕(onMismatch) -->  
        <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}/logs/debug.%d{yyyy-MM-dd_HH-mm}.log</FileNamePattern>
            <!-- 保留的歸檔文件的最大數量,超出數量就刪除舊文件,此處是按分鐘滾動,30則代表30分鐘 -->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
    </appender>
     
    <!-- 特定過濾含有某字符串的日誌 -->
    <appender name="file-str" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${log_path}/logs/contains.log</File>
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
            <evaluator>
                <!-- 日誌信息中需要包含指定的字符串 -->
                <expression>message.contains("abc")</expression>
            </evaluator>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${log_path}/logs/contains.%d{yyyy-MM-dd}.log </FileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
    </appender>
     
    <!-- 按照每天和每個日誌文件大小生成日誌文件 -->   
    <appender name="audioDist"  class="ch.qos.logback.core.rolling.RollingFileAppender">   
        <File>${log_path}/logs/audioDist.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日誌文件輸出的文件名-->
            <FileNamePattern>${log_path}/logs/audioDist.%d{yyyy-MM-dd}.%i.log</FileNamePattern> 
            <!--日誌文件保留天數-->
            <MaxHistory>30</MaxHistory>
            <!-- 單個日誌文件的大小 單位KB,MB,GB -->
            <maxFileSize>1KB</maxFileSize> 
            <!-- 所有日誌文件的總大小空間。當日誌文件的空間超過了設置的最大空間數量,就會刪除舊的文件。註意:這個標簽必須和maxHistory標簽一起使用。 -->
            <totalSizeCap>10MB</totalSizeCap> 
        </rollingPolicy>   
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符--> 
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>   
        </encoder> 
    </appender> 
     
    <!-- 指定包輸出指定級別日誌 -->
    <logger name="com.gavin">
        <level value="warn" />
    </logger>
         
    <root level="DEBUG">
        <appender-ref ref="stdout" />
        <appender-ref ref="audioDist"/>
        <appender-ref ref="file—debug"/>
        <appender-ref ref="file-str"/>
    </root>   
</configuration>  

logback常見配置