2013-05-21 65 views
0

我有一個Web應用程序。當我運行'mvn test'時,它將調試消息記錄到控制檯,因爲我配置了它。但是當我將它部署到tomcat時,我沒有看到應用程序的日誌。我非常確定,我在戰爭的正確位置獲得了log4j.properties文件,因爲當我更改部署的/var/lib/tomcat7/webapps/worldmodel/WEB-INF/classes/log4j.properties中的值時記錄器或休眠和觸摸web.xml,我看到/ chease查看調試日誌休眠。但是,我無法讓我的應用程序的調試消息與我嘗試過的任何配置一起記錄下來。 這裏是我該怎麼辦日誌:log4j與tomcat不記錄什麼是登錄mvn測試

import org.apache.log4j.Level; 
import org.apache.log4j.Logger; 

logger = Logger.getLogger(BaseObject.class); 
log(Level.DEBUG,"message"); 

這裏是log4j.properties進行測試:

log4j.rootLogger=INFO, CONSOLE 

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.Encoding=UTF-8 
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n 

log4j.appender.SYSLOG = org.apache.log4j.net.SyslogAppender 
log4j.appender.SYSLOG.syslogHost = 127.0.0.1 
log4j.appender.SYSLOG.layout = org.apache.log4j.PatternLayout 
log4j.appender.SYSLOG.layout.ConversionPattern = %d [%t] %-5p %c- %m%n 
log4j.appender.SYSLOG.Facility = LOCAL0 

log4j.logger.org.rulez.magwas.worldmodel=DEBUG 
#log4j.logger.org.hibernate.SQL=debug 
#log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=trace 
#log4j.logger.org.hibernate.type=trace 

這裏是被部署在log4j.properties:

log4j.rootLogger=INFO, SYSLOG 

log4j.appender.SYSLOG = org.apache.log4j.net.SyslogAppender 
log4j.appender.SYSLOG.syslogHost = 127.0.0.1 
log4j.appender.SYSLOG.layout = org.apache.log4j.PatternLayout 
log4j.appender.SYSLOG.layout.ConversionPattern = %d [%t] %-5p %c- %m%n 
log4j.appender.SYSLOG.Facility = LOCAL0 

log4j.logger.org.rulez.magwas.worldmodel=DEBUG 
#log4j.logger.org.hibernate.SQL=debug 
#log4j.logger.org.hibernate.type.descriptor.sql.BasicBinder=trace 
#log4j.logger.org.hibernate.type=trace 

我得到這樣的線路在mvn測試中:

2013-05-21 07:12:17,751 [main] DEBUG org.rulez.magwas.worldmodel.BaseObject- setValue0e9é 072r 074t 0e9é 06bk 

整個項目:https://github.com/magwas/worldmodel/commit/c6b08da0a733d9b61257c669e0cc4af9e59444be

編輯:

OK,算了吧,代碼(在一個bean getter和setter方法)似乎沒有被調用,也許休眠套/直接獲取價值?

+0

你確定你的Tomcat安裝沒有其他的記錄器嗎? –

+0

您確定正在進行日誌記錄的代碼正在被調用嗎?嘗試用sysout替換它來確認。 – gkamal

+0

請參閱問題中的編輯。我是否應該爲每個從中登錄的課程實例化記錄器? –

回答

0

因爲您正在配置INFO級別的ROOT記錄器,所以它不會顯示任何DEBUG級別的消息。

log4j.rootLogger=INFO, SYSLOG 

以上rootLogger應配置爲DEBUG看到調試和其他更高級別(致命,錯誤,警告和信息)在你的日誌。

log4j.rootLogger=DEBUG, SYSLOG 

我不知道你的Maven的測試用例配置,但也許是log4j.properties你分享的是沒有出現任何效果。

編輯:從您的編輯看來,您的登錄生產配置錯誤。如果您的日誌記錄設置爲INFO,則不應記錄DEBUG消息。我的意思是,這只是打敗了日誌級別的目的,清楚地表明Log4j沒有被正確配置,並耗盡了Prod資源的空間和時間。