2010-01-08 111 views
1

我有一個應用程序在使用hibernate的jboss容器中運行。不過,我在使用hibernate進行日誌記錄時遇到了麻煩。當Hibernate初始化時我得到這些啓動信息:控制休眠日誌記錄

2010-01-08 17:23:42,017 INFO [Configuration:1403] - Configuration resource: /hibernate.cfg.xml 
2010-01-08 17:23:42,070 INFO [Configuration:1541] - Configured SessionFactory: null 

等等。但是我想擺脫它們,因爲它是無用的信息。我在我的log4j.properties以下配置:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%c{1}:%L] - %m%n 

log4j.rootCategory = error, stdout 

# Hibernate 
log4j.logger.org.hibernate=error 
log4j.logger.org.hibernate.tool.hbm2ddl=fatal 

正如你可以看到記錄不會匹配我ConversionPattern指定的格式。不過,我仍然收到INFO消息。我還使用了Asterisk-Java API

# Asterisk java 
log4j.logger.org.asteriskjava=error 

這並不正常工作,我只能得到錯誤:

2010-01-08 17:31:46,948 ERROR [AgiConnectionHandler:156] - AgiException running AgiScript com.**** on Asterisk-Java DaemonPool-1-thread-2 org.asteriskjava.fastagi.AgiException: Number is on blacklist 

所以我現在有點糊塗。

更新

-Dlog4j.debug 

運行容器我得到:

log4j: Reading configuration from URL jar:file:*******.jar!/log4j.properties 
log4j: Parsing for [root] with value=[error, stdout]. 
log4j: Level token is [error]. 
log4j: Category root set to ERROR 
log4j: Parsing appender named "stdout". 
log4j: Parsing layout options for "stdout". 
log4j: Setting property [conversionPattern] to [%d %-5p [%c{1}:%L] - %m%n]. 
log4j: End of parsing for "stdout". 
log4j: Parsed "stdout" options. 
log4j: Parsing for [org.hibernate.tool.hbm2ddl] with value=[error]. 
log4j: Level token is [error]. 
log4j: Category org.hibernate.tool.hbm2ddl set to ERROR 
log4j: Handling log4j.additivity.org.hibernate.tool.hbm2ddl=[null] 
log4j: Parsing for [org.hibernate] with value=[fatal]. 
log4j: Level token is [fatal]. 
log4j: Category org.hibernate set to FATAL 
log4j: Handling log4j.additivity.org.hibernate=[null] 
log4j: Parsing for [org.asteriskjava] with value=[error]. 
log4j: Level token is [error]. 
log4j: Category org.asteriskjava set to ERROR 
log4j: Handling log4j.additivity.org.asteriskjava=[null] 
log4j: Finished configuring. 

沒有其他文件被加載任何。所以我想知道爲什麼它不起作用。此外,我試圖創建會話出廠前執行以下操作:

Logger.getLogger("org.hibernate").setLevel(Level.ERROR); 

沒有成功要麼...

回答

1

聽起來像另一個日誌配置的地方可能會改寫你的。您可能需要嘗試將系統變量-Dlog4j.debug添加到您的容器的啓動路徑,以便log4j將打印出它的調試信息,該信息將會告訴您準確使用哪個文件來配置自身。可能會使用類路徑上的另一個文件而不是您的文件。

而且,你真的不應該在任何類型的生產環境中使用%L - the Javadoc explicitly warns against this

%L:
用於輸出日誌請求發出的行號。
警告生成呼叫者位置信息非常緩慢。應該避免使用它,除非執行速度不是問題。

+0

我有一些想法是的,我會嘗試你的建議。我知道%L問題,我有單獨的文件用於生產/開發 – 2010-01-08 16:27:05

+0

我已經用您的建議的結果更新了我的問題 – 2010-01-08 17:50:50