我們知道,程式在運行過程中會產生很多很多信息,例如在幾點幾分的時候運行了,運行的結果是怎麼樣的?為了我們更了解程式運作的情況,可以透過日誌來查看,日誌可以在控制台輸出,也可以輸出至指定的文件內,在下面的文章中具體的給大家介紹。
Log4J是Apache公司的開源項目,用於日誌處理。下載網址:
https://logging.apache.org/log4j/2.x/download.html
下載完成後,我們可以得到一個後綴名為jre的套件。
可以新建一個項目,然後在專案內新建一個lib包,把log4j.jar這個包放進去。
然後在src內建立一個類別:
依照圖的步驟即可:
在這裡把jre的套件加入即可:
當完成上述操作之後,即可在類別裡面建立物件:
注意:這裡選擇的Logger套件是要來自apache的包,這裡一定不要選錯!
import org.apache.log4j.Logger; public class logTest { public static void main(String[] args) { //导入对象: Logger log = Logger.getLogger(logTest.class); log.error("用于记录error级别的信息"); //记录严重错误 log.warn("用于记录warn级别的信息"); //记录警告 log.info("用于记录info级别的信息"); //记录信息 log.debug("用于记录debug级别的信息"); //记录debug } }
接著我們需要建立設定檔:
#新建一個檔案file,檔案後綴名一定要是properties
#然後新建一個文件,名字可以設為:resources,並且把格式改為如下圖:
然後把剛剛建造的設定檔放入這個文件內即可:
我們需要在log.properties內配置以下三個最要資訊:
配置你的程式將什麼等級的日誌記錄到日誌檔案中
指定日誌輸出的目的地,是將日誌記錄到程式的控制台(瞬時狀態的)還是在磁碟的某個文件中(持久化保存)
指定輸出到控制台或文件中的日誌資訊的輸出格式,或者說以什麼樣的格式記錄這些日誌資訊。
設定的範本如下:
直接複製到log.properties內即可:
# 1.設定輸出等級info,可以將info以及更高級別的記錄到日誌檔案中,但其更低的例如debug等級就不會記錄到日誌檔案中
# stdout是設定的日誌記錄的目的地(名字可以隨便起的當時要對應上)
log4j.rootLogger=info,stdout#2.設定日誌記錄的目的地(ConsoleAppender是記錄到控制台)
log4j.appender.stdout=org.apache. log4j.ConsoleAppender#3.設定記錄的格式或樣式(System.err是紅色樣式、System.out是黑色樣式)
log4j.appender.stdout.Target=System.err
# 設定記錄的格式
#PatternLayout是依照我們自訂規則佈局(%d %l %m %n就是指定的規則佈局)
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %l %m %n
這個配置資訊我們可以先不看,完成上面的配置,我們先運行一下上面的那段程式碼:
如果出現這樣,表示是正確的。我們重新寫一段程式碼來看看這個日誌的功能:
import org.apache.log4j.Logger; import java.util.Scanner; public class test2 { public static void main(String[] args) { Logger logger = Logger.getLogger(test2.class); Scanner input = new Scanner(System.in); try{ System.out.println("请输入除数:"); int a = input.nextInt(); logger.debug("bug:输入除数"+a); logger.info("info:输入除数"+a); System.out.println("请输入被除数:"); int b = input.nextInt(); logger.debug("bug:输入除数"+b); logger.info("info:输入除数"+b); int c = a/b; //把结果记录到日志文件中 logger.debug("bug:结果"+c); logger.info("info:结果"+c); System.out.println("结果是:"+c); } catch (Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); }finally { System.out.println("程序结束!!"); } } }
這是一段除法的運算,先運行,看效果:
我們發現,我們在程式內執行的每一步,日誌都記錄了下來,因為在配置文件內設置的是輸出至控制台,所以直接在控制台顯示了日誌信息,如果需要輸出至指定文件,需要配置如下:
然後再執行除法的程式:
在控制台沒有顯示日誌資訊了,因為已經設定成輸出到指定的檔案內: 根據設定的路徑,我們可以看到:
##這樣的記錄有時間信息,有程序名信息,還有在程序的第幾行發生了什麼的信息全部被記錄了下來。當然輸出的格式還有很多很多,可以根據需要去另外設定即可! 關於Log4j日誌小應學長就講到這裡,完成這些步驟,一個簡單的日誌記錄就完成了,下面日誌輸出的等級也需要注意。 日誌的輸出等級:1.off:最高等級,用於關閉所有日誌記錄2.fatal 指出每個嚴重的錯誤時間將會導致應用程式的退出
#
3.error 指雖然傳送錯誤事件,但仍不影響系統的運作
4.warn 指明會出現潛在的錯誤情形
5.info 一般使用者記錄程式的執行過程
6.debug 一般用於調試的資訊記錄
7.all 最低級別,用於開啟所有的日誌記錄
以上是Java中Log4j日誌怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!