logback常見配置
阿新 • • 發佈:2018-01-02
trac accep and tab 日誌級別 depend 單個 最大 mis 依賴jar包
從低到高分為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{參數}:輸出類名稱
%d{參數},%date{參數}:輸出時間。參數可以是text.SimpleDateFormat字符拼接而成,也可以使用系統默認
%L,%line:輸出執行日誌請求的行號。盡量避免使用,除非執行速度不造成任何問題。
%m或%msg或%message:輸出日誌信息
%M或%method:輸出方法名
%p,%le,%level:輸出日誌級別
%t,%thread:輸出產生日誌的線程名。
logback.xml配置文件
<!-- 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-classiclogback配置文件加載,根據以下步驟尋找配置文件: 1. 在 classpath 中尋找 logback-test.xml文件 2.如果找不到 logback-test.xml,則在 classpath 中尋找 logback.groovy 文件 3.如果找不到 logback.groovy,則在 classpath 中尋找 logback.xml文件 日誌級別--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.7</version> </dependency>
%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 | 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 |
<?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常見配置