寫一個自己的logback.xml文件
logback介紹:
由slf4j創始人設計的開源日志組件,性能比slf4j更好;分為三個模塊(都可以在網上下載)------
(1)logback-core(logback的核心基礎,以它為基礎可以構建其他自己的模塊)
(2)logback-access(可以和tomcat等servlet容器集成,提供日志的HTTP界面
化訪問功能)
(3)logback-classic(是slf4j的改進版,完整實現了slf4j API,使logback可以輕松在各個日志框架之間來回轉換,無需變動源碼);
成功搭建logback,logback.xml文件是重要的一步,src目錄下必須有logback.xml。
· logbacak.xml ------ logback的核心配置文件,負責控制logback日志系統的所有特性。
logback.xml文件主要三部分:
· Loggers(日志記錄器,把日志關聯到指定context上,也可以指定日志級別)
· Appenders(輸出目的地,指定日志輸出目的地,包括,控制臺、文件、數據庫等等)
· Layouts(輸出日志格式,把事件轉換成字符串,格式化日志信息輸出,從0.9.19開始逐漸被代替)
從logback0.9.17開始,標簽不區分大小寫,但是以什么形式開頭,就要以什么形式關閉。
編寫logback.xml文件,不外乎分清各個標簽的作用和意思,基礎標簽如下
【本篇jar版本是1.2.3,slf4j是1.7.26,版本不同時,logback.xml配置稍有不同需要注意】:
1、 <configuration> 配置文件的最基本標簽,了解就好(包含0個或多個<appender>、<logger>,最多一個<root>)
內置三個屬性
· scan(默認true,配置文件發生修改后,自動重新加載
· scanPeriod(建立在scan屬性ture前提下,設置重新加載的時間間隔,默認60s)
· debug(默認false,打印logback內部日志信息,實時查看logback運行狀態);
1.1 <logger> 具體規定某個包/類的打印級別,以及指定<appender> 【可選】
1.1.1 屬性:
· name --- 指定受規定的包/類路徑
· level --- 受限制的級別
· addtivity --- 是否向上級logger傳遞打印信息,默認True
1.1.2 <appender-ref ref= "CONSOLE/FILE"> 指定appender輸出,多地使用該標簽會導致日志重復記錄
2、<appender> 控制logback的輸出位置和格式【兩個輸出位置:控制臺 / 指定文件】
<appender name="CONSOLE" class="ch.qos.logback.coore.ConsoleAppender"> 指定輸出位置為控制臺的固定格式
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 指定文件的固定格式
· class="logback的jar包內提供該操作的類"
【對于輸出指定在控制臺的配置標簽】
2.1 <target> 控制輸出的模式
一般兩種 System.out / System.err 以輸出 / 錯誤(就是紅色字體)的形式打印
2.2 <encoder> 內置作用:把日志信息轉換成字節數組,再把字節數組寫入輸出流,pattern是其子標簽
2.2.1 <pattern> 指定每條日志信息的輸出格式舉例: %d{yyyy-MM-dd HH:mm} [%-5level] %c [%thread] : %msg %n ,格式自定義,更多要求可上網查找對應參數
解釋:(1)%d 表示日期格式,{}內設置日期格式,默認是yyyy-MM-dd(2)%-5level 表示日志級別
(3)%c 即%class,表示日志信息產生的類 | %logger{n} 也表示產生的類,當可以根據n略輸出類的全名(n表示字符數)
(4)%thread 表示該日志程序的線程名/方法名
(5)%msg 日志具體信息內容
(6)%n 換行符
<!-- 指定輸出到控制臺 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>
%d{yyyy-MM-dd HH:mm} [%-5level] %c [%thread] : %msg %n
</pattern>
</encoder>
</appender>
【對于輸出指定在文件中的配置標簽】
2.4 <charset> 指定文件的編碼,一般是utf-8 【encoder的子標簽】
2.5 <file> 指定存放日志的文件路徑
2.6 <rollingPolicy> 指定日志的拆分和壓縮規則屬性 class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" | "滾動策略",一定要寫
1.6.1 <MaxFileSize> 設定文件最大值(日志內容達到最大值就會開始拆分)
1.6.2 <fileNamePattern> 拆分文件的具體格式和路徑
· %i 表示拆分的次數,從0開始
<!-- 指定輸出到文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<charset>UTF-8</charset>
<pattern>
%d{yyyy-MM-dd HH:mm} [%-5level] %logger{5} [%thread] == %msg %n
</pattern>
</encoder>
<!-- 指定輸出路徑,要先創建好該路徑 -->
<file>D:/homework/curricular/Logback-input/LogbackRecord.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--設置日志文件最大內存,達最大值開始拆分-->
<maxFileSize>50KB</maxFileSize>
<!-- 拆分文件的路徑+命名格式-->
<fileNamePattern>
D:/homework/curricular/Logback-input/LogbackRecord%d{yyyyMMdd-HHmm }%i.tar
</fileNamePattern>
</rollingPolicy>
</appender
3、<root> 控制基礎日志輸出級別的標簽【即使配置了appender,不配置root使配置和對應目的地關聯,依舊不會有日志輸出到對應位置】
<root level="日志級別"> 控制日志打印
【擴展——日志級別(對應Logger對象的方法):ERROR>WARN>INFO>DEBUG>TRACE(大小寫都可以),不規定級別時,默認級別是debug;
全局控制級別:ALL和OFF ,輸出所有或一條都不輸出
作用:控制日志信息的輸出,只有大于或等于設定的級別的日志信息】
3.1 <appender-ref ref="CONSOLE / FILE" /> 設置關聯的位置,只有加了該標簽,才會在對應位置按照root設定等級進行信息輸出
<!--默認debug-->
<root level="">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
【以上,完整的基礎logback.xml文件】
· 更多注意事項
二、配置效果
· 創建Logback對象
· 默認level=debug,所以不會輸出5555
· 查看文件路徑下【已測試多次,生成壓縮文件】

浙公網安備 33010602011771號