淺談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è)類(lèi),Test1在com.ht包下面,Test2在com.ht.log包下面。每個(gè)下面打印一句:logger.info();
經(jīng)過(guò)試驗(yàn)發(fā)現(xiàn)?。。。?/h3>
Test1將輸出到控制臺(tái)和ht.log
Test2將輸出到控制臺(tái)和ht.log和ht2.log
注意這里rootLogger的級(jí)別可是error,可見(jiàn)這里的級(jí)別不起作用。
對(duì)于申明appender的包rootLogger的級(jí)別設(shè)置不起作用
其實(shí),這里的error只對(duì)于沒(méi)有申明appender的包才起作用。如果去掉log4j.logger.com.ht.log這一句,Test1沒(méi)有任何輸出,除非logger.error才會(huì)輸出到控制臺(tái)。
第二點(diǎn):凡是申明appender的包,不論申明級(jí)別一定會(huì)包含rootLogger的輸出,如果同時(shí)指定了outfile,那么日志會(huì)出現(xiàn)兩份。
第三點(diǎn):com.ht.log這個(gè)包下面的類(lèi)可以匹配到所有上級(jí)目錄的設(shè)置。
日志怎么設(shè)置要想清楚??!不然這一句打到控制臺(tái)那句打到文件,出問(wèn)題了查出來(lái)的日志不連貫,好幾個(gè)文件查來(lái)查去。
log4j.additivity.com.ht=false 可以不寫(xiě)入rootLogger。默認(rèn)是true
log4j rootLogger配置
log4j.rootLogger=INFO,db語(yǔ)法為
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。
通過(guò)在這里定義的級(jí)別,您可以控制到應(yīng)用程序中相應(yīng)級(jí)別的日志信息的開(kāi)關(guān)。
比如在這里定義了INFO級(jí)別,則應(yīng)用程序中所有DEBUG級(jí)別的日志信息將不被打印出來(lái)。
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)文章
基于Spring AOP @AspectJ進(jìn)階說(shuō)明
這篇文章主要介紹了基于Spring AOP @AspectJ進(jìn)階說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01java利用注解實(shí)現(xiàn)簡(jiǎn)單的excel數(shù)據(jù)讀取
這篇文章主要為大家詳細(xì)介紹了java利用注解實(shí)現(xiàn)簡(jiǎn)單的excel數(shù)據(jù)讀取,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06java中對(duì)Redis的緩存進(jìn)行操作的示例代碼
本篇文章主要介紹了java中對(duì)Redis的緩存進(jìn)行操作的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08Java如何實(shí)現(xiàn)支付寶電腦支付基于servlet版本
這篇文章主要介紹了Java如何實(shí)現(xiàn)支付寶電腦支付基于servlet版本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11SpringMVC實(shí)現(xiàn)Controller的三種方式總結(jié)
這篇文章主要介紹了SpringMVC實(shí)現(xiàn)Controller的三種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Spring?Cloud?使用?Resilience4j?實(shí)現(xiàn)服務(wù)熔斷的方法
服務(wù)熔斷是為了保護(hù)我們的服務(wù),比如當(dāng)某個(gè)服務(wù)出現(xiàn)問(wèn)題的時(shí)候,控制打向它的流量,讓它有時(shí)間去恢復(fù),或者限制一段時(shí)間只能有固定數(shù)量的請(qǐng)求打向這個(gè)服務(wù),這篇文章主要介紹了Spring?Cloud?使用?Resilience4j?實(shí)現(xiàn)服務(wù)熔斷,需要的朋友可以參考下2022-12-12解決Java Calendar類(lèi)set()方法的陷阱
這篇文章主要介紹了解決Java Calendar類(lèi)set()方法的陷阱,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03簡(jiǎn)述IDEA集成Git在實(shí)際項(xiàng)目中的運(yùn)用
這篇文章主要介紹了IDEA集成Git在實(shí)際項(xiàng)目中的運(yùn)用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07