Java知識積累——logback日志工具,告別到處輸出變量值來調試程序的時代吧~


在大學壘代碼時,遇到程序錯誤,輸出不是預計的情況時,你是怎么解決的呢?我的解決辦法就是到處System.out.pringln();,打出當時的變量值,一點一點找哪里出錯了。結果有的時候就忘了到底在哪里添加了用於找錯的輸出語句,然后就去不掉多余的輸出了,然后就各種抓狂了。以及等等很多情況吧,不知道你們遇到過嗎?步入職場后,逐漸接觸到了日志這個概念,雖然之前也聽說過,但卻不了解其真正用途。又一次在心里痛罵了大學的教育之后,我開始自學目前公司在用的日志工具——logback。

 

日志記錄了程序的運行狀態,輸出了你指定需要輸出的內容,能夠方便快捷的定位出錯的位置和原因。那么怎么使用logback呢,下面來簡單介紹一下:首先需要導入第三方jar包,分別為logback-classic-1.0.6.jar,logback-core-1.0.6.jar,slf4j-api-1.6.4.jar

下載地址

slf4j:http://www.slf4j.org/download.html

logback:http://logback.qos.ch/download.html

 

Logback 分為三個模塊:logback-core,logback-classic,logback-access(我們只用到前兩個)

logback-core 是核心;

logback-classic 改善了 log4j,且自身實現了 SLF4J API,所以即使用 Logback 你仍然可以使用其他的日志實現,如原始的 Log4J,java.util.logging 等;

logback-access 讓你方便的訪問日志信息,如通過 http 的方式。

 

將以上3個jar包導入工程后,需要配置logback.xml文件,告訴logback應該怎么工作。所以在src上右鍵新建一個xml文件,命名為logback.xml。關於logback.xml應該如何配置,其中的標簽含義等,請閱讀下列文章,在此感謝分享了這些文章的原作者。

logback 簡介

logback 常用配置詳解(一)<configuration> and <logger>

logback 常用配置詳解(二)<appender>

logback 常用配置詳解(三)<filter>

 

配置完成后,我們即可在程序中應用logback進行日志輸出,其方便快捷需要大家慢慢體驗了。給一個使用logback的例子,該例子即使不配置logback.xml也可以運行,logback采用了默認配置直接輸出到了控制台

 1 import org.slf4j.Logger;
 2 import org.slf4j.LoggerFactory;
 3 
 4 public class LogbackTest { 5     private static final Logger debugLogger = LoggerFactory.getLogger(LogbackTest.class); 
 6     public static void main(String[] args) {
 7         debugLogger.debug("debug thing");
 8         debugLogger.warn("warn thing");
 9     }
10 }

 再放一個logback.xml的配置實例

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <configuration>
 4   <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
 5     <encoder>
 6       <pattern>%d{MMdd.HHmmss.SSS} [%-24t] %-5p L:%-3L %-22c{0} - %m%n</pattern>
 7     </encoder>
 8     
 9     <!-- 只輸出level級別的日志 -->
10     <filter class = "ch.qos.logback.classic.filter.LevelFilter">
11       <level>INFO</level>
12       <onMatch>ACCEPT</onMatch>
13       <onMismatch>DENY</onMismatch>
14     </filter>
15   </appender>
16 
17   <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
18     <File>log/server.log</File>
19     <encoder>
20       <pattern>%d{MMdd.HHmmss} [%-22t] %-5p L:%-3L %-22c{0} - %m%n</pattern>
21     </encoder>
22     
23     <!-- 只輸出level級別以上的日志 -->
24     <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
25       <level>INFO</level> 
26     </filter>
27     
28     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
29       <fileNamePattern>log/server.log.%d{yyyyMMddHH}</fileNamePattern>
30     </rollingPolicy>
31   </appender>
32   
33   <logger name="org.logback.test.LogbackTest" level="DEBUGE" />
34   
35   <root level="DEBUGE">
36     <appender-ref ref="FILE"/>
37     <appender-ref ref="stdout"/>
38   </root>
39 </configuration>

輸出如下:

0402.153319.903 [main                    ] INFO  L:30  LogbackTest            - info thing

通過日志的輸出,我們能夠很快的定位是哪個類的哪行出現了問題。


免責聲明!

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



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