亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

:Java那些事之Log4j http://www.cnblogs.com/l

系統(tǒng) 2046 0

Java那些事之Log4j

?

上次跟大家分享了java使用berkeley db。這一次,再跟大家分享一個(gè)開源組件,大名鼎鼎的log4j。這里需要首先聲明一點(diǎn),我在這里和大家分享的,都是我的個(gè)人實(shí)際經(jīng)驗(yàn),只是把我知道的東西盡可能多的分享。但是對(duì)于技術(shù)本身,可能還有很多更深入更有意思的東西,是我沒有接觸到或者沒有研究的,如果各位對(duì)此有更深的研究,歡迎大家一起切磋補(bǔ)充。在這里先拜謝了~

下面進(jìn)入正題,前一陣用了一下log4j,感覺還是挺不錯(cuò)的,可以支持配置文件和程序代碼對(duì)log進(jìn)行配置,靈活方便,也具有一定的擴(kuò)展性,簡(jiǎn)單介紹一下。

首先還是說一下獲取方式,去http://logging.apache.org/log4j/1.2/這個(gè)地址下載log4j的最新版本,然后添加到j(luò)ava項(xiàng)目中就可以了。

在介紹方法之前,首先對(duì)log4j的參數(shù)做一個(gè)總體的概述:

?

輸出級(jí)別的種類
ERROR、WARN、INFO、DEBUG
ERROR 為嚴(yán)重錯(cuò)誤 主要是程序的錯(cuò)誤
WARN 為一般警告,比如session丟失
INFO 為一般要顯示的信息,比如登錄登出
DEBUG 為程序的調(diào)試信息
配置日志信息輸出目的地
log4j.appender.appenderName = fully.qualified.name.of.appender.class
1.org.apache.log4j.ConsoleAppender(控制臺(tái))
2.org.apache.log4j.FileAppender(文件)
3.org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)
4.org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件)
5.org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)
配置日志信息的格式
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
2.org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
3.org.apache.log4j.SimpleLayout(包含日志信息的級(jí)別和信息字符串),
4.org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時(shí)間、線程、類別等等信息)
控制臺(tái)選項(xiàng)
Threshold=DEBUG:指定日志消息的輸出最低層次。
ImmediateFlush=true:默認(rèn)值是true,意謂著所有的消息都會(huì)被立即輸出。
Target=System.err:默認(rèn)情況下是:System.out,指定輸出控制臺(tái)
FileAppender 選項(xiàng)
Threshold=DEBUF:指定日志消息的輸出最低層次。
ImmediateFlush=true:默認(rèn)值是true,意謂著所有的消息都會(huì)被立即輸出。
File=mylog.txt:指定消息輸出到mylog.txt文件。
Append=false:默認(rèn)值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內(nèi)容。
RollingFileAppender 選項(xiàng)
Threshold=DEBUG:指定日志消息的輸出最低層次。
ImmediateFlush=true:默認(rèn)值是true,意謂著所有的消息都會(huì)被立即輸出。
File=mylog.txt:指定消息輸出到mylog.txt文件。
Append=false:默認(rèn)值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內(nèi)容。
MaxFileSize=100KB: 后綴可以是KB, MB 或者是 GB. 在日志文件到達(dá)該大小時(shí),將會(huì)自動(dòng)滾動(dòng),即將原來的內(nèi)容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以產(chǎn)生的滾動(dòng)文件的最大數(shù)。
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n
日志信息格式中幾個(gè)符號(hào)所代表的含義:
?-X號(hào): X信息輸出時(shí)左對(duì)齊;
?%p: 輸出日志信息優(yōu)先級(jí),即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL,
?%d: 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
?%r: 輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)
?%c: 輸出日志信息所屬的類目,通常就是所在類的全名
?%t: 輸出產(chǎn)生該日志事件的線程名
?%l: 輸出日志事件的發(fā)生位置,相當(dāng)于%C.%M(%F:%L)的組合,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。舉例:Testlog4.main (TestLog4.java:10)
?%x: 輸出和當(dāng)前線程相關(guān)聯(lián)的NDC(嵌套診斷環(huán)境),尤其用到像java servlets這樣的多客戶多線程的應(yīng)用中。
?%%: 輸出一個(gè)"%"字符
?%F: 輸出日志消息產(chǎn)生時(shí)所在的文件名稱
?%L: 輸出代碼中的行號(hào)
?%m: 輸出代碼中指定的消息,產(chǎn)生的日志具體信息
?%n: 輸出一個(gè)回車換行符,Windows平臺(tái)為"\r\n",Unix平臺(tái)為"\n"輸出日志信息換行
?可以在%與模式字符之間加上修飾符來控制其最小寬度、最大寬度、和文本的對(duì)齊方式。如:
?1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小于20的話,默認(rèn)的情況下右對(duì)齊。
?2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小于20的話,"-"號(hào)指定左對(duì)齊。
?3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大于30的話,就會(huì)將左邊多出的字符截掉,但小于30的話也不會(huì)有空格。
?4)%20.30c:如果category的名稱小于20就補(bǔ)空格,并且右對(duì)齊,如果其名稱長(zhǎng)于30字符,就從左邊較遠(yuǎn)輸出的字符截掉。

?注 以上參數(shù)說明來自:http://blog.csdn.net/azheng270/archive/2008/03/12/2173430.aspx 有興趣的朋友可以直接去那里學(xué)習(xí),還有更詳細(xì)的解釋。

?

?

使用方法如下,首先需要有一個(gè)log4j的配置文件,我們就取名為log4j.properties

log4j.logger.URL_Expand = DEBUG , ?url_expand
log4j.appender.url_expand
= org.apache.log4j.DailyRollingFileAppender
#log4j.appender.url_expand.File
= url_expand.log
log4j.appender.url_expand.layout
= org.apache.log4j.PatternLayout
log4j.appender.url_expand.layout.ConversionPattern
= %d?%p? [ %c ] ?-?%m%n
log4j.appender.url_expand.DatePattern
= yyyy-MM-dd

log4j.logger.Downloader
= DEBUG , ?downloader
log4j.appender.downloader
= org.apache.log4j.DailyRollingFileAppender
#log4j.appender.downloader.File
= downloader.log
log4j.appender.downloader.layout
= org.apache.log4j.PatternLayout
log4j.appender.downloader.layout.ConversionPattern
= %d?%p? [ %c ] ?-?%m%n
log4j.appender.downloader.DatePattern
= yyyy-MM-dd

?上面指定了log的各種信息,但是請(qǐng)注意,這里我把文件名注釋掉了。這是因?yàn)槲倚枰獎(jiǎng)討B(tài)指定文件名,因?yàn)橛行┏绦蚩赡懿⒉皇菃螜C(jī)運(yùn)行,而是很多機(jī)器一起運(yùn)行,而最后又要把log放在一起,如果文件名都相同,就會(huì)出現(xiàn)新文件覆蓋舊文件的情況。而且文件之間還有混淆,因此我在文件名前打算加上機(jī)器的主機(jī)名,這樣既避免了剛才的問題,還可以一目了然日志的所有者是哪臺(tái)機(jī)器,一舉兩得啊。

要?jiǎng)討B(tài)指定日志名稱,我目前的辦法是在程序中,修改配置文件

View Code

?這樣就可以實(shí)現(xiàn)效果了。大家快去試試吧~

?

另外,log4j還可以和郵件相結(jié)合,你可以指定當(dāng)發(fā)生了什么級(jí)別的事件時(shí),系統(tǒng)會(huì)自動(dòng)向你發(fā)送郵件,這樣你可以及時(shí)知道錯(cuò)誤的發(fā)生,第一時(shí)間去處理,提高工作效率。下面我們來看看怎么發(fā)郵件吧。

首先要下載兩個(gè)jar:activation.jar和mail.jar 具體地址我不記得了,大家去搜一下吧。應(yīng)該有很多地方都可以下載的到。

?之后也是要把jar加到j(luò)ava工程中來,然后就可以進(jìn)行配置了。不用寫代碼哦~

?配置如下,只需要再之前的配置文件的 log4j.logger.URL_Expand = DEBUG , ?url_expand這一行,添加MAIL,然后再后面加上MAIL的配置就行了

?

log4j.logger.URL_Expand = DEBUG , ?url_expand , MAIL
log4j.appender.url_expand
= org.apache.log4j.DailyRollingFileAppender
#log4j.appender.url_expand.File
= url_expand.log
log4j.appender.url_expand.layout
= org.apache.log4j.PatternLayout
log4j.appender.url_expand.layout.ConversionPattern
= %d?%p? [ %c ] ?-?%m%n
log4j.appender.url_expand.DatePattern
= yyyy-MM-dd

log4j.logger.Downloader
= DEBUG , ?downloader , MAIL
log4j.appender.downloader
= org.apache.log4j.DailyRollingFileAppender
#log4j.appender.downloader.File
= downloader.log
log4j.appender.downloader.layout
= org.apache.log4j.PatternLayout
log4j.appender.downloader.layout.ConversionPattern
= %d?%p? [ %c ] ?-?%m%n
log4j.appender.downloader.DatePattern
= yyyy-MM-dd

log4j.appender.MAIL
= org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold
= FATAL
log4j.appender.MAIL.BufferSize
= 1
log4j.appender.MAIL.SMTPHost
= smtp .163 .com
log4j.appender.MAIL.SMTPDebug
= false
log4j.appender.MAIL.Subject
= Log4J?Message
log4j.appender.MAIL.SMTPUsername
= username
log4j.appender.MAIL.SMTPPassword
= password
log4j.appender.MAIL.From
= email?address
log4j.appender.MAIL.To
= your?email?address
log4j.appender.MAIL.layout
= org.apache.log4j.PatternLayout?
log4j.appender.MAIL.layout.ConversionPattern
= [ framework ] ?%d?-?%c?-%-4r? [ %t ] ?%-5p?%c?%x?-?%m%n

?其中,需要指定 Threshold也就是發(fā)郵件的級(jí)別,如果是info,則info以及error還有fatal都會(huì)發(fā)郵件。

?

?

還需要指定郵件服務(wù)器(163測(cè)試通過),發(fā)件地址,密碼,收件地址和信件格式等。這個(gè)大家自己去試試吧。

只要正常寫日志,如果級(jí)別超過或等于 Threshold中指定的級(jí)別,就會(huì)發(fā)送郵件,不用額外進(jìn)行編碼。

:Java那些事之Log4j http://www.cnblogs.com/luchen927/archive/2011/06/30/2094091.htm


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 天天干夜夜夜 | 日韩欧美 在线播放 | 另类图片色 | 久久er99热这里只是精品 | 亚洲精品欧美日本中文字幕 | 国产精彩视频在线 | 久久9966e这里只有精品 | 日韩在线中文 | 男人天堂视频在线 | 一级欧美毛片成人免费视频 | 久久久久琪琪免费影院 | 伊人久久久久久久久香港 | 色xxx| 99re6这里只有精品视频 | 国产不卡免费 | 91精品国产高清久久久久久io | 午夜视频在线免费看 | 天天操天天干天天摸 | 69精品| 精品一区二区三区三区 | 一区二区三区在线免费视频 | 国产美女精品在线 | 精品国产欧美 | 毛片机地 | 婷五月天| 成人美女黄网站色大色费 | 亚洲欧美另类在线视频 | 亚洲国产日韩a在线亚洲 | 欧美一级一毛片 | 欧美日韩一区二区三 | 九九九精品在线观看 | 亚洲图欧美日韩色综合图 | 亚洲人成影院在线高清 | 婷婷激情片 | 亚洲爱婷婷色婷婷五月 | 黑人巨大精品战中国美女 | 婷婷色网 | 国产123区 | 亚洲久本草在线中文字幕 | 亚洲国产精品二区久久 | 亚洲区一区 |