log4j的jar包內部包含preference默認配置,使用者可以通過log4j.xml或log4j.properties來指定自己的配置。xml比properties優先。另外注意java讀取properties文件時只是通過=號來分割鍵值對,所以#注釋不能與鍵值對定義放在同一行。
指定配置文件的方式有:
1.log4j.jar包會先使用System.getProperty("log4j.xml或configuration")看是否有jvm參數,我們可以通過java -Dlog4j.configuration=file:/full_path/log4j.properties 來指定(file:前綴不能省)。
2.代碼中使用PropertyConfigurator.configure(param);來指定。比較令人困惑的可能是相對路徑的問題了,在IDE或jar包中可以通過getClassLoader().getResource("log4j.properties");來獲得存在於CLASSPATH中資源文件。
多個jar包共用一個log4j.jar的情況下可以實現讓不同jar包使用不同的輸出等級,
如將rootLogger設為info級別,而將自己的包設為debug級別:
log4j.logger.包名=DEBUG
也可以指定每個jar包輸出到不同的文件:
log4j.logger.包名1=DEBUG,jar1logger
log4j.appender.jar1logger=org.apache.log4j.RollingFileAppender
log4j.appender.jar1logger.layout=org.apache.log4j.PatternLayout
log4j.appender.jar1logger.layout.ConversionPattern=%d [%t]<%-5p> %c -> %m%n
log4j.appender.jar1logger.File=/var/log/mylog/jar1.log
log4j.appender.jar1logger.Append=true
log4j.appender.jar1logger.MaxFileSize=1024KB
log4j.appender.jar1logger.MaxBackupIndex=5
下面是最簡單的一份配置:
### set log levels ,stdout,D,E是自己起的名字### #設置rootLogger級別為INFO則屏蔽debug信息,級別all<debug < info < warn < error < fatal<off log4j.rootLogger = INFO, stdout ### 輸出到控制台 ### 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 = [fyk]%d{ABSOLUTE} %p [%C{1}.%M]:%L - %m%n ### 輸出到日志文件 ### log4j.appender.D = org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File = logs/all.log log4j.appender.D.Append = true ## 輸出DEBUG級別以上的日志 log4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r][%C{1}.%M] - [%p] %m%n ##ERROR log4j.appender.E = org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File =logs/error.log log4j.appender.E.Append = true log4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r][%C{1}.%M] - [%p] %m%n