Java日志記錄之Log4j

大家好宪睹,我是IT修真院北京分院第22期的學(xué)員,一枚正直純潔善良的JAVA程序員

今天給大家分享一下濒憋,修真院官網(wǎng)JAVA任務(wù)1贬循,深度思考中的知識點——Log4j

PPT鏈接:https://ptteng.github.io/PPT/PPT-java/Java_task01_log4j.html#/

視頻連接:


Java日志記錄之log4j_騰訊視頻

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市悴灵,隨后出現(xiàn)的幾起案子扛芽,更是在濱河造成了極大的恐慌,老刑警劉巖积瞒,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件川尖,死亡現(xiàn)場離奇詭異,居然都是意外死亡茫孔,警方通過查閱死者的電腦和手機(jī)叮喳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缰贝,“玉大人馍悟,你說我怎么就攤上這事∈G纾” “怎么了锣咒?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長李破。 經(jīng)常有香客問我宠哄,道長,這世上最難降的妖魔是什么嗤攻? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任毛嫉,我火速辦了婚禮,結(jié)果婚禮上妇菱,老公的妹妹穿的比我還像新娘承粤。我一直安慰自己暴区,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布辛臊。 她就那樣靜靜地躺著仙粱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彻舰。 梳的紋絲不亂的頭發(fā)上伐割,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音刃唤,去河邊找鬼隔心。 笑死,一個胖子當(dāng)著我的面吹牛尚胞,可吹牛的內(nèi)容都是我干的硬霍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼笼裳,長吁一口氣:“原來是場噩夢啊……” “哼唯卖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起躬柬,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拜轨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后楔脯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撩轰,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年昧廷,在試婚紗的時候發(fā)現(xiàn)自己被綠了堪嫂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡木柬,死狀恐怖皆串,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情眉枕,我是刑警寧澤恶复,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站速挑,受9級特大地震影響谤牡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姥宝,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一翅萤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腊满,春花似錦套么、人聲如沸培己。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽省咨。三九已至,卻和暖如春玷室,著一層夾襖步出監(jiān)牢的瞬間零蓉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工穷缤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留壁公,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓绅项,卻偏偏與公主長得像,于是被迫代替她去往敵國和親比肄。 傳聞我的和親對象是個殘疾皇子快耿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 在應(yīng)用程序中添加日志記錄總的來說基于三個目的:監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計分析...
    時待吾閱讀 5,050評論 1 13
  • 在應(yīng)用程序中添加日志記錄總的來說基于三個目的:監(jiān)視代碼中變量的變化情況芳绩,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計分析...
    時待吾閱讀 4,988評論 0 6
  • from:https://www.cnblogs.com/ITtangtang/p/3926665.html一掀亥、L...
    enshunyan閱讀 3,292評論 0 0
  • 一、Log4j簡介 Log4j有三個主要的組件:Loggers(記錄器)妥色,Appenders (輸出源)和Layo...
    默默守護(hù)閱讀 1,910評論 2 8
  • log4j 1.1 簡介 Log4j是一個由Java編寫可靠搪花、靈活的日志框架,是Apache旗下的一個開源項目嘹害;現(xiàn)...
    賈博巖閱讀 7,907評論 1 32