淺談log4j的rootLogger及其他坑爹的地方
log4j的rootLogger及其他坑爹地方
這里用的是org.apache.log4j.Logger
log4j.rootLogger=error, stdout
log4j.appender.appenderName=org.apache.log4j.AsyncAppender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
#only time no date.outfile1 has date
log4j.logger.com.ht=info,outfile1
log4j.appender.outfile1=org.apache.log4j.RollingFileAppender
log4j.appender.outfile1.File=log/ht.log
log4j.appender.outfile1.MaxFileSize=100MB
log4j.appender.outfile1.MaxBackupIndex=50
log4j.appender.outfile1.layout=org.apache.log4j.PatternLayout
log4j.appender.outfile1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
log4j.logger.com.ht.log=info,outfile2
log4j.appender.outfile2=org.apache.log4j.RollingFileAppender
log4j.appender.outfile2.File=log/ht2.log
log4j.appender.outfile2.MaxFileSize=100MB
log4j.appender.outfile2.MaxBackupIndex=50
log4j.appender.outfile2.layout=org.apache.log4j.PatternLayout
log4j.appender.outfile2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
然后有兩個(gè)類,Test1在com.ht包下面,Test2在com.ht.log包下面。每個(gè)下面打印一句:logger.info();
經(jīng)過試驗(yàn)發(fā)現(xiàn)!?。?!
Test1將輸出到控制臺(tái)和ht.log
Test2將輸出到控制臺(tái)和ht.log和ht2.log
注意這里rootLogger的級(jí)別可是error,可見這里的級(jí)別不起作用。
對(duì)于申明appender的包rootLogger的級(jí)別設(shè)置不起作用
其實(shí),這里的error只對(duì)于沒有申明appender的包才起作用。如果去掉log4j.logger.com.ht.log這一句,Test1沒有任何輸出,除非logger.error才會(huì)輸出到控制臺(tái)。
第二點(diǎn):凡是申明appender的包,不論申明級(jí)別一定會(huì)包含rootLogger的輸出,如果同時(shí)指定了outfile,那么日志會(huì)出現(xiàn)兩份。
第三點(diǎn):com.ht.log這個(gè)包下面的類可以匹配到所有上級(jí)目錄的設(shè)置。
日志怎么設(shè)置要想清楚??!不然這一句打到控制臺(tái)那句打到文件,出問題了查出來的日志不連貫,好幾個(gè)文件查來查去。
log4j.additivity.com.ht=false 可以不寫入rootLogger。默認(rèn)是true
log4j rootLogger配置
log4j.rootLogger=INFO,db語法為
log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
level:是日志記錄的優(yōu)先級(jí),分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級(jí)別。
Log4j建議只使用四個(gè)級(jí)別,優(yōu)先級(jí)從高到低分別是ERROR、WARN、INFO、DEBUG。
通過在這里定義的級(jí)別,您可以控制到應(yīng)用程序中相應(yīng)級(jí)別的日志信息的開關(guān)。
比如在這里定義了INFO級(jí)別,則應(yīng)用程序中所有DEBUG級(jí)別的日志信息將不被打印出來。
appenderName:就是指定日志信息輸出到哪個(gè)地方。您可以同時(shí)指定多個(gè)輸出目的地。
例如:
log4j.rootLogger=info,A1,B2,C3 配置了3個(gè)輸出地方,這個(gè)名字可以任意(如上面的db),但必須與我們?cè)诤竺孢M(jìn)行的設(shè)置名字對(duì)應(yīng);
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringMVC下實(shí)現(xiàn)Excel文件上傳下載
這篇文章主要為大家詳細(xì)介紹了SpringMVC下實(shí)現(xiàn)Excel文件上傳下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
學(xué)會(huì)Java字節(jié)碼指令,成為技術(shù)大佬
Java 字節(jié)碼指令是 JVM 體系中非常難啃的一塊硬骨頭,我估計(jì)有些讀者會(huì)有這樣的疑惑,“Java 字節(jié)碼難學(xué)嗎?我能不能學(xué)會(huì)啊?”本文帶領(lǐng)大家一探究竟,幫助大家搞懂java底層代碼如何執(zhí)行2021-08-08
淺談Mybatis+mysql 存儲(chǔ)Date類型的坑
這篇文章主要介紹了淺談Mybatis+mysql 存儲(chǔ)Date類型的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
SpringBoot沒有讀取到application.yml問題及解決
這篇文章主要介紹了SpringBoot沒有讀取到application.yml問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
dubbo如何設(shè)置連接zookeeper權(quán)限
這篇文章主要介紹了dubbo如何設(shè)置連接zookeeper權(quán)限問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
SpringIOC?BeanDefinition的加載流程詳解
這篇文章主要為大家介紹了SpringIOC?BeanDefinition的加載流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

