log4j配置

log4j使用說明java

在使用Log4j時若提示以下信息:
log4j:WARN No appenders could be found for logger
則,解決辦法爲:在項目的src下面新建file名爲log4j.properties文件,內容以下:web

# Configure logging for testing: optionally with log file
#能夠設置級別:debug>info>error
#debug:能夠顯式debug,info,error
#info:能夠顯式info,error
#error:能夠顯式errorspring

log4j.rootLogger=debug,appender1
#log4j.rootLogger=info,appender1
#log4j.rootLogger=error,appender1sql

#輸出到控制檯
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#樣式爲TTCCLayout
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayoutapache

而後,存盤退出。再次運行程序就會顯示Log信息了。mybatis

經過配置文件可知,咱們須要配置3個方面的內容:
一、根目錄(級別和目的地);
二、目的地(控制檯、文件等等);
三、輸出樣式。多線程


是什麼信息。。。。
log4j.appender.R=org.apache.log4j.DailyRollingFileAppendermvc


System.setProperty("org.apache.commons.logging.Log","org.apache.commons.logging.impl.NoOpLog");app


log4j.rootLogger=INFO,logfile
# DailyRollingFileAppender:天天產生一個日誌文件框架

# Threshold=WARN:指定日誌消息的輸出最低層次。

# ImmediateFlush=true:默認值是true,意謂着全部的消息都會被當即輸出。
# File=mylog.txt:指定消息輸出到mylog.txt文件。
# Append=false:默認值是true,即將消息增長到指定文件中,false指將消息覆蓋指定的文件內容。
# DatePattern='.'yyyy-ww:每週滾動一次文件,即每週產生一個新的文件。固然也能夠指定按月、周、天、時和分
# %p: 輸出日誌信息優先級,即DEBUG,INFO,WARN,ERROR,FATAL,。若是是調用debug()輸出的,則爲DEBUG,依此類推
# %d: 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyy MMM dd HH:mm:ss,SSS},輸出相似:2002年10月18日 22:10:28,921
# %r: 輸出自應用啓動到輸出該log信息耗費的毫秒數
# %c: 輸出日誌信息所屬的類目,一般就是所在類的全名
# %t: 輸出產生該日誌事件的線程名
# %l: 輸出日誌事件的發生位置,至關於%C.%M(%F:%L)的組合,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java:10)
# %x: 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤爲用到像java servlets這樣的多客戶多線程的應用中。
# %%: 輸出一個"%"字符
# %F: 輸出日誌消息產生時所在的文件名稱
# %L: 輸出代碼中的行號  輸出日誌事件的發生位置,即輸出日誌信息的語句處於它所在的類的第幾行
# %m: 輸出代碼中指定的消息,產生的日誌具體信息,如log(message)中的message
# %n: 輸出一個回車換行符,Windows平臺爲"/r/n",Unix平臺爲"/n"輸出日誌信息換行


log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=/WEB-INF/logs/log4j.log
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.logfile.ImmediateFlush=true
log4j.appender.logfile.Append=true
log4j.appender.logfile.Threshold=DEBUG
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c]- %m%n


log4j.rootLogger=DEBUG, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=log/test.log
log4j.appender.logfile.MaxFileSize=128MB
log4j.appender.logfile.MaxBackupIndex=3
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

 

private static Log logger1 = LogFactory.getLog("mylogger1");
private static Log logger2 = LogFactory.getLog("mylogger2");

log4j.logger.mylogger1=DEBUG,test1
log4j.appender.test1=org.apache.log4j.FileAppender
log4j.appender.test1.File=log/test1.log

log4j.appender.test1.layout=org.apache.log4j.PatternLayout
log4j.appender.test1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

log4j.logger.mylogger2=DEBUG,test2
log4j.appender.test2=org.apache.log4j.FileAppender
log4j.appender.test2.File=log/test2.log
log4j.appender.test2.layout=org.apache.log4j.PatternLayout
log4j.appender.test2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

 

#log4j.appender.test1.Encoding=utf8
#log4j.appender.stdout.Target=System.out


還有一個問題,就是這些自定義的日誌默認是同時輸出到log4j.rootLogger所配置的日誌中的,如何能只讓它們輸出到本身指定的日誌中呢?別急,這裏有個開關:
log4j.additivity. mylogger1 = false
它用來設置是否同時輸出到log4j.rootLogger所配置的日誌中,設爲false就不會輸出到其它地方了。
可是這種方式有個小缺陷,那就是打印的日誌中類名只能是mylogger或者mylogger2。

 

如下配置屏蔽SSH框架的日誌輸出:
log4j.logger.org.springframework=OFF  
log4j.logger.org.apache.struts2=OFF  
log4j.logger.com.opensymphony.xwork2=OFF  
log4j.logger.com.ibatis=OFF  
log4j.logger.org.hibernate=OFF

log4j.logger.org.springframework.web.servlet.mvc.method.annotation=WARN
log4j.logger.org.springframework=INFO
log4j.logger.org.mybatis=INFO
log4j.logger.org.apache=INFO
log4j.logger.com.yoyosys.console=DEBUG

log4j.logger.org.apache.ibatis=debug,stdout
log4j.logger.java.sql=debug,stdout


1.2 配置根Logger
根logger主要定義log4j支持的日誌級別及輸出目的地,其語法爲:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,level 是日誌記錄的優先級,分爲OFF、FATAL、   ERROR、WARN、INFO、DEBUG、   ALL或者自定義的級別。
建議只使用四個級別,優先級從高到低分別是ERROR、WARN、INFO、DEBUG。
appenderName指定日誌信息輸出到哪一個地方,可同時指定多個輸出目的地。


Log4j提供的appender有如下幾種:
    org.apache.log4j.ConsoleAppender(控制檯),
    org.apache.log4j.FileAppender(文件),
    org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件),
    org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
    org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)
 
**********************************************************************   
其中,Log4j提供的layout有如下幾種:
org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
org.apache.log4j.PatternLayout(能夠靈活地指定佈局模式),
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串)
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)


1.5 設置package輸出級別
能夠設置不一樣package的日誌輸出級別,語法爲:
log4j.logger.packageName=level
其中,packageName爲實際的包名,level爲日誌級別,例如:    

 

參考資料

**********************************************************************

http://blog.csdn.net/hbcui1984/article/details/5007197

http://liuzhijun.iteye.com/blog/1746571

http://blog.csdn.net/zhoulenihao/article/details/24995397 **********************************************************************

相關文章
相關標籤/搜索