2013-11-28 183 views
1

我已經看到它的問題,但沒有一個幫助我。 我使用log4j,但因爲它在控制檯上工作正常,所以它不會向聲明的文件寫入任何內容。更重要的是,文件被創建,但沒有保存在其中。 代碼:log4j - 日誌沒有寫入文件

#default 
log4j.rootLogger=ERROR,console 

#Console Appender 
log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
log4j.appender.console.layout.ConversionPattern=[%5p] [%t %d{hh:mm:ss}] (%F:%M:%L) %m%n 

#Custom assignments 
log4j.logger.controller=DEBUG,console 
log4j.logger.service=DEBUG,console 
log4j.logger.dao=DEBUG,console 

#Disable additivity 
log4j.additivity.controller=false 
log4j.additivity.service=false 
log4j.additivity.dao=false 

#MyLogger 
log4j.logger.classPath.myClass = INFO, CACHE 

log4j.appender.CACHE=org.apache.log4j.RollingFileAppender 
log4j.appender.CACHE.File = ./logs/cache.log 
log4j.appender.CACHE.bufferedIO = false 
log4j.appender.CACHE.ImmediateFlush=true 
log4j.appender.CACHE.Threshold=info 
log4j.appender.CACHE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CACHE.layout.ConversionPattern=[%5p] [%t %d{hh:mm:ss}] (%F:%M:%L) %m%n 

我敢肯定,記錄器定義正確的,因爲當additivity=false,日誌不會在控制檯顯示預期。並且,當添加log4j.logger.myClass = INFO, CACHE, console時,日誌將再次顯示在控制檯中。所以記錄器聲明看起來很好。那麼爲什麼他們沒有在日誌文件中顯示?

我正在使用org.apache.log4j.Logger.getLogger(myClass.class).info('msg')語法來使用記錄器。 org.apache.log4j.Logger.getLogger("classPath.myClass").info('msg')也無法正常工作。

當試圖log4j.rootLogger=INFO,console,CACHE也沒有文件中出現。

+0

嘗試更改爲log4j.rootLogger =信息,控制檯 – Keerthivasan

+0

不起作用。根據這個來源:http://www.goldenline.pl/ramka/aHR0cDovL2xvZ2dpbmcuYXBhY2hlLm9yZy9sb2c0ai8xLjIvbWFudWFsLmh0bWw=這並不重要,因爲我的記錄器已定義了其級別。 – Filu

+0

因爲該級別是爲MyClass定義的,所以級別不會從父級繼承 – Keerthivasan

回答

1

記錄器名稱被錯誤地指定。如下

#MyLogger 
log4j.logger.MyClass = INFO, CACHE 

,而不是

#MyLogger 
log4j.logger.myClass = INFO, CACHE 

MyClass的被誤記爲myClass的請更換。您還可以使記錄器實例化如下

Logger.getLogger("MyClass").info('msg'); 

希望這有助於!

+0

實際上,MyClass只是一個示例,並非實際的名稱。 MyClass表示classpath + className或只是一個類路徑。但將其更改爲簡稱(如myClass)並將其與Logger.getLogger(「myClass」)一起使用仍然無效。 – Filu

+0

記錄器可以使用名稱或使用包進行實例化。請完成問題。所以,這將很容易幫助 – Keerthivasan

+0

好吧,我改變了一些問題,我希望我明確表示,記錄器的聲明是好的。問題只在於將日誌寫入文件。 – Filu