-Java-log4j

Log4j簡(jiǎn)介: Log4j是用于管理信息日志的插件工具,它是Apache的一個(gè)開源項(xiàng)目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺(tái)、文件、GUI組件,甚至是套接口服務(wù)器、NT的事件記錄器、UNIX、Syslog守護(hù)進(jìn)程、Email郵箱等;我們也可以控制每一條日志的輸出格式;通過定義每一條日志信息的級(jí)別,我們能夠更加細(xì)致地控制日志【學(xué)Java,到凱哥學(xué)堂kaige123.com】的生成過程。最令人感興趣的就是,這些只需要通過一個(gè)配置文件來靈活地進(jìn)行配置,而不需要修改工程的代碼,Log4j因?yàn)槭窃趈ava中使用的,所以lo4j就是log for Java(java的日志)的簡(jiǎn)寫。

Log4j下載: Log4j可以在官網(wǎng)下載,然后將jar包導(dǎo)入到工程就可以使用了。 官網(wǎng)下載地址:http://logging.apache.org/log4j/1.2/download.html

log4j可以直接在Maven工程中通過pom文件配置下載,配置語法:

log4jlog4j1.2.17

Lo4j設(shè)計(jì)結(jié)構(gòu): Lo4j中最主要的四個(gè)結(jié)構(gòu):Logger、Appender、Layout、日志級(jí)別,Lo4j中最高父類是Logger類,然后就是Appender類,這個(gè)類是用來設(shè)置日志信息的輸出方向的,使用Appender可以指定日信息輸出到控制臺(tái)、文件、郵箱等等。 Appender常用的日志信息輸出方向:

org.apache.log4j.ConsoleAppender(控制臺(tái))

org.apache.log4j.FileAppender(文件)

org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)

org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件)

org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)

接著就是Layout,Layout是用于布局日志信息的輸出格式的,常用的Layout布局: org.apache.log4j.HTMLLayout(以HTML表格形式布局)

org.apache.log4j.PatternLayout(可以靈活地指定布局模式)

org.apache.log4j.SimpleLayout(包含日志信息的級(jí)別和信息字符串) org.apache.log4j.TTCCLayout(包含日志產(chǎn)生的時(shí)間、線程、類別等等信息)

最后是日志級(jí)別,日志級(jí)別簡(jiǎn)單地說就是根據(jù)你代碼中輸出日志信息的嚴(yán)重程度來劃分一個(gè)級(jí)別,常用的日志級(jí)別有以下幾種:

DEBUG?指定細(xì)粒度信息事件是最有用的應(yīng)用程序調(diào)試 INFO? 指定能夠突出在粗粒度級(jí)別的應(yīng)用程序運(yùn)行情況的信息的消息

WARN? 指定具有潛在危害的情況

ERROR? 錯(cuò)誤事件可能仍然允許應(yīng)用程序繼續(xù)運(yùn)行 FATAL? 指定非常嚴(yán)重的錯(cuò)誤事件,這可能導(dǎo)致應(yīng)用程序中止

以上寫的級(jí)別是做了一個(gè)排序的,為什么說是做了排序呢?是因?yàn)槔缒阒付―EBUG級(jí)別的話,包括DEBUG以內(nèi)的以下四個(gè)級(jí)別的信息都會(huì)輸出,指定INFO級(jí)別則只輸出包括INFO內(nèi)的以下三個(gè)級(jí)別的信息都會(huì)輸出,然后以此類推的一個(gè)順序。 例如:

DEBUG>>>DEBUG,INFO,WARN,ERROR,FATAL

INFO>>>INFO,WARN,ERROR,FATAL

WARN>>>WARN,ERROR,FATAL

ERROR>>>ERROR,FATAL

FATAL>>>FATAL

配置Lo4j: 將Log4j的jar下載到工程后就可以開始進(jìn)行l(wèi)og4j的配置了,首先創(chuàng)建log4j的屬性文件,這個(gè)文件對(duì)于log4j來說相當(dāng)于Maven的pom文件,與日志相關(guān)的東西都在這個(gè)文件里進(jìn)行配置: Maven工程:

普通工程:

編寫一個(gè)類,用Logger類的對(duì)象調(diào)用一些方法來輸出日志信息:

配置屬性文件:

配置屬性文件意義詳解:

第二行輸出方向需要.layout的原因是因?yàn)閟etLayout方法:

那行亂碼般地自定義輸出格式表示的意義如下:

%m輸出的文本內(nèi)容%p輸出優(yōu)先級(jí),即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL%r輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)%c輸出所屬的類目,通常就是所在類的全名%t輸出產(chǎn)生該日志事件的線程名%n輸出一個(gè)回車換行符,Windows平臺(tái)為“rn”,Unix平臺(tái)為“n”%d輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 :10:28,921%l輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。%xUsed to output the NDC (nested diagnostic context) associated with the thread that generated the logging event%XUsed to output the MDC (mapped diagnostic context) associated with the thread that generated the logging eventforspecified key

運(yùn)行結(jié)果:

選擇輸出日志的級(jí)別:

運(yùn)行結(jié)果:

選擇某個(gè)包的日志信息輸出,在log4j.logger 后面加入一個(gè)包名就可以了:

運(yùn)行結(jié)果:

還可以具體到選擇某個(gè)類的日志信息輸出:

運(yùn)行結(jié)果:

還可以在某個(gè)類里自定義別名,然后配置到屬性文件后就會(huì)輸出這個(gè)類的日志信息: 代碼示例:

配置屬性文件:

運(yùn)行結(jié)果:

日志方案可以配置多個(gè),只需要名稱不同即可:

運(yùn)行結(jié)果:

在Maven工程或者普通工程將工程打包成jar包時(shí),注意要去除log4j日志的屬性文件,這里以Maven工程做示例,普通工程移除文件即可,Maven工程需要在生命周期中插入一個(gè)插件來幫助去除,這樣就不需要手動(dòng)移除了: 配置語法:

org.apache.maven.pluginsmaven-jar-plugin2.4**/*.properties

運(yùn)行Maven的打包命令可以看到target文件夾和jar包里都沒有這個(gè)log4j的屬性文件:

總結(jié):

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在應(yīng)用程序中添加日志記錄總的來說基于三個(gè)目的:監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 5,146評(píng)論 0 6
  • 在應(yīng)用程序中添加日志記錄總的來說基于三個(gè)目的:監(jiān)視代碼中變量的變化情況,周期性的記錄到文件中供其他應(yīng)用進(jìn)行統(tǒng)計(jì)分析...
    時(shí)待吾閱讀 5,203評(píng)論 1 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評(píng)論 19 139
  • 一、Log4j簡(jiǎn)介 Log4j有三個(gè)主要的組件:Loggers(記錄器),Appenders (輸出源)和Layo...
    默默守護(hù)閱讀 1,976評(píng)論 2 8
  • from:https://www.cnblogs.com/ITtangtang/p/3926665.html一、L...
    enshunyan閱讀 3,399評(píng)論 0 0

友情鏈接更多精彩內(nèi)容