淺談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
然后有兩個類,Test1在com.ht包下面,Test2在com.ht.log包下面。每個下面打印一句:logger.info();
經(jīng)過試驗發(fā)現(xiàn)?。。。?/h3>
Test1將輸出到控制臺和ht.log
Test2將輸出到控制臺和ht.log和ht2.log
注意這里rootLogger的級別可是error,可見這里的級別不起作用。
對于申明appender的包rootLogger的級別設置不起作用
其實,這里的error只對于沒有申明appender的包才起作用。如果去掉log4j.logger.com.ht.log這一句,Test1沒有任何輸出,除非logger.error才會輸出到控制臺。
第二點:凡是申明appender的包,不論申明級別一定會包含rootLogger的輸出,如果同時指定了outfile,那么日志會出現(xiàn)兩份。
第三點:com.ht.log這個包下面的類可以匹配到所有上級目錄的設置。
日志怎么設置要想清楚??!不然這一句打到控制臺那句打到文件,出問題了查出來的日志不連貫,好幾個文件查來查去。
log4j.additivity.com.ht=false 可以不寫入rootLogger。默認是true
log4j rootLogger配置
log4j.rootLogger=INFO,db語法為
log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
level:是日志記錄的優(yōu)先級,分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定義的級別。
Log4j建議只使用四個級別,優(yōu)先級從高到低分別是ERROR、WARN、INFO、DEBUG。
通過在這里定義的級別,您可以控制到應用程序中相應級別的日志信息的開關。
比如在這里定義了INFO級別,則應用程序中所有DEBUG級別的日志信息將不被打印出來。
appenderName:就是指定日志信息輸出到哪個地方。您可以同時指定多個輸出目的地。
例如:
log4j.rootLogger=info,A1,B2,C3 配置了3個輸出地方,這個名字可以任意(如上面的db),但必須與我們在后面進行的設置名字對應;
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot沒有讀取到application.yml問題及解決
這篇文章主要介紹了SpringBoot沒有讀取到application.yml問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
SpringIOC?BeanDefinition的加載流程詳解
這篇文章主要為大家介紹了SpringIOC?BeanDefinition的加載流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10

