大家好宪睹,我是IT修真院北京分院第22期的學(xué)員,一枚正直純潔善良的JAVA程序員
今天給大家分享一下濒憋,修真院官網(wǎng)JAVA任務(wù)1贬循,深度思考中的知識點——Log4j
PPT鏈接:https://ptteng.github.io/PPT/PPT-java/Java_task01_log4j.html#/
視頻連接:
1,引言
Java中日志是個很重要但又容易被初學(xué)者忽略的知識點浦译,那么今天我們就來看一下幾種記錄日志的方式棒假,以及應(yīng)該怎么記錄日志。
2精盅,記錄日志的幾種方式
記錄日志的方式有多個帽哑,這幾種我們也都見到過:
① 最簡單的方式:System.out.println("徐小明");
這種方式是我們在學(xué)習(xí)Java基礎(chǔ)時就掌握了的,但為什么我們不建議用這種方式呢叹俏?其中一個很重要的原因是這種日志輸出方式是在控制臺妻枕,而我們開發(fā)的項目是要上線運行的,任何的問題反饋我們是靠日記記錄來查找原因的粘驰,就必須要脫離控制臺這種模式屡谐。
②Java.util.logging.logger
在JDK1.4版本之后,提供了日志的API蝌数,可以往文件中寫日志了康嘉。
public class TestLogJava {
? ? ? ? ?public static void main (String[]?args) throws IOException {
? ? ? ? ?Logger?log?=?Logger.getLogger("testlog");
? ? ? ? log.setLevel(Level.ALL);
? ? ? ? FileHandler?fileHandler?=new FileHandler("testlog.log");
? ? ? ? fileHandler.setLevel(Level.ALL);
? ? ? ? fileHandler.setFormatter(new LogFormatter());
? ? ? ? log.addHandler(fileHandler);
? ? ? ? log.info("This?is?test?java?util?log");
? ?}
}
這是在網(wǎng)上找到的一個例子,可以看到首先是定義了一個Logger的實例籽前,并設(shè)置了log的級別,接著添加了一個fileHander就是把日志寫入文件中。在寫入文件的時候枝哄,定義一個LogFormatter隊日志進(jìn)行格式的渲染肄梨。
③Log4j
log4j是Apache提供的記錄日志的jar包。
在使用時挠锥,首先要導(dǎo)入log4j的jar包众羡,然后要配置log4j.properties。
配置實例:
log4j.rootLogger=DEBUG,Console,Stdout
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.appender.Console.File=D:\\Tomcat 5.5\\logs\\qc.log
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.appender.Stdout = org.apache.log4j.DailyRollingFileAppender
log4j.appender.Stdout.Append = true
log4j.appender.Stdout.Threshold = DEBUG
log4j.appender.Stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.ConversionPattern =%-d{yyyy-MM-dd HH/:mm/:ss}? [ %t/:%r ] - [ %p ]? %m%n
log4j日志一共有五種級別:DEBUG蓖租、INFO粱侣、WARN、ERROR蓖宦、FATAL齐婴。
--log4j.rootLogger=DEBUG,Console,Stdout
這里指定了日志級別為debug,并將等級為debug的日志信息輸出到Console和Stdout兩個目的地稠茂。Console和Stdout名字可以隨意起柠偶,只要在后面定義了就行。
--log4j.appender.Console=org.apache.log4j.ConsoleAppender
此句為定義名為Console的輸出端是哪種類型睬关,可以是:
org.apache.log4j.ConsoleAppender(控制臺)诱担,
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個日志文件)电爹,
org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時候產(chǎn)生一個新的文件)
org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)
--log4j.appender.Console.layout=org.apache.log4j.PatternLayout
此句為定義名為Console的輸出端的layout是哪種類型蔫仙,可以是
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以靈活地指定布局模式)丐箩,
org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串)摇邦,
org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時間、線程雏蛮、類別等等信息)
--log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
如果使用pattern布局就要指定的打印信息的具體格式ConversionPattern涎嚼,打印參數(shù)如下:
%m 輸出代碼中指定的消息
%p 輸出優(yōu)先級,即DEBUG挑秉,INFO法梯,WARN,ERROR犀概,F(xiàn)ATAL
%r 輸出自應(yīng)用啟動到輸出該log信息耗費的毫秒數(shù)
%c 輸出所屬的類目立哑,通常就是所在類的全名
%t 輸出產(chǎn)生該日志事件的線程名
%n 輸出一個回車換行符,Windows平臺為“rn”姻灶,Unix平臺為“n”
%d 輸出日志時間點的日期或時間铛绰,默認(rèn)格式為ISO8601,也可以在其后指定格式产喉,比如:%d{yyyy MMM dd HH:mm:ss,SSS}捂掰,輸出類似:2002年10月18日 22:10:28敢会,921
%l 輸出日志事件的發(fā)生位置,包括類目名这嚣、發(fā)生的線程鸥昏,以及在代碼中的行數(shù)。
[QC]是log信息的開頭姐帚,可以為任意字符吏垮,一般為項目簡稱。
--log4j.appender.Console.File=D:\\Tomcat 5.5\\logs\\qc.log
此句為定義名為Console的輸出端的文件名為D:\\Tomcat 5.5\\logs\\qc.log可以自行修改罐旗。
④Commons-logging
Commons-logging也是Apache提供的日志jar包膳汪。
Commons-logging提供的是一個日志(Log)接口(Interface),是為那些需要建立在不同環(huán)境下使用不同日志架構(gòu)的組件或庫的開發(fā)者創(chuàng)建的其中包括Apache Log4j以及Java log的日志架構(gòu)。把日志信息抽象成commons-logging的Log接口九秀,并由commons-logging在運行時決定使用哪種日志架構(gòu)遗嗽。因為Log4j的強(qiáng)大功能,commons-logging一般會和Log4j一起使用颤霎,這幾乎成為了Java日志的標(biāo)準(zhǔn)工具媳谁。
3,log4j與slf4j的結(jié)合
slf4j:Simple logging facade for Java友酱。
slf4j不是具體的日志解決方案晴音,它只服務(wù)于各種各樣的日志系統(tǒng)。按照官方的說法缔杉,SLF4J是一個用于日志系統(tǒng)的簡單Facade锤躁,允許最終用戶在部署其應(yīng)用時使用其所希望的日志系統(tǒng)。
在使用SLF4J的時候或详,不需要在代碼中或配置文件中指定你打算使用那個具體的日志系統(tǒng)系羞,SLF4J提供了統(tǒng)一的記錄日志的接口,只要按照其提供的方法記錄即可霸琴,最終日志的格式椒振、記錄級別、輸出方式等通過具體日志系統(tǒng)的配置來實現(xiàn)梧乘,因此可以在應(yīng)用中靈活切換日志系統(tǒng)澎迎。
使用步驟:
1,在JavaWeb項目中使用SLF4J和LOG4J选调,需要在項目中添加下面三個jar包:log4j.jar slf4j-api.jar slf4j-log4j.jar夹供。
2,配置log4j.properties
3仁堪,在web.xml中添加log4j的配置
4哮洽,在需要輸出日志的類中添加slf4j的logger實例對象:
今天的分享就到這里啦,歡迎大家點贊弦聂、轉(zhuǎn)發(fā)鸟辅、留言氛什、拍磚~
------------------------------------------------------------------------------------------------------------------------
技能樹.IT修真院
“我們相信人人都可以成為一個工程師,現(xiàn)在開始匪凉,找個師兄屉更,帶你入門,掌控自己學(xué)習(xí)的節(jié)奏洒缀,學(xué)習(xí)的路上不再迷茫”欺冀。
這里是技能樹.IT修真院树绩,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化隐轩,成長可見化饺饭,師兄1對1免費指導(dǎo)≈俺担快來與我一起學(xué)習(xí)吧~
我的邀請碼:10014595瘫俊,或者你可以直接點擊此鏈接:http://www.jnshu.com/login/1/10014595