2013-04-08 58 views
2

有沒有一種方法可以讓Play框架1.2.5顯示c3p0調試日誌?c3p0與Play Framework 1的日誌?

有人問過這個問題Play email list;至少將以下內容添加到log4j.properties中不起作用:

log4j.logger.com.mchange.v2.c3p0=DEBUG 
log4j.category.com.mchange=DEBUG 
log4j.logger.com.mchange=DEBUG 

回答

3

隨着一些遊戲源代碼的閱讀,DBPlugin:onApplicationStart似乎有以下幾點:

... 
System.setProperty("com.mchange.v2.log.MLog", "com.mchange.v2.log.FallbackMLog"); 
System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "OFF"); 
ComboPooledDataSource ds = new ComboPooledDataSource(); 
... 

註釋掉這些System.setProperty線,建設當地的罐子後,我能看到C3P0記錄。

不知道是否有一種方法來啓用除此之外的日誌記錄?

+0

哦。這很糟糕。他們已經通過系統屬性有效關閉了所有c3p0日誌記錄,並且配置日誌記錄庫的優先級最高。這不應該在代碼中完成,但顯然是這樣。你已經做了正確的事情來解決它。 – 2013-04-08 13:57:52

1

您是否看到c3p0日誌記錄信息的任何地方?是通過標準輸出,還是通過java.util.logging?

無論如何,有一點是嘗試

com.mchange.v2.log.MLog=com.mchange.v2.log.log4j.Log4jMLog 

你可以把一個c3p0.properties文件,或將其設置爲系統屬性(或創建一個名爲mchange-log.properties)。有關更多信息,請參見here

+0

在標準輸出或log4j日誌中沒有顯示。隨着一些源爬行,我發現了一個可能的原因,我會做出另一個答案。 – Touko 2013-04-08 11:55:47

0

你在你的application.conf文件中試過這個嗎?

# Debug SQL statements (logged using DEBUG level): 
jpa.debugSQL=true 

不知道它是否會給你你需要的日誌,但值得一試。

+0

檢查源代碼,jpa.debugSQL = true以'org.apache.log4j.Logger.getLogger(「org.hibernate.SQL」).setLevel(Level.ALL);'結尾,否則level設爲Level。關閉。所以它會對Hibernate SQL日誌有影響。 – Touko 2013-04-10 04:54:04

0

在討論中,avfl &斯科特發現與OnApplicationStart工作另一種方式:

package jobs; 

import play.jobs.*; 
import play.Logger; 

@OnApplicationStart 
public class C3p0Logging extends Job { 

    public void doJob() { 
     Logger.info("Setting custom c3p0 log level"); 
     com.mchange.v2.log.log4j.Log4jMLog.getLogger().setLevel(com.mchange.v2.log.MLevel.FINEST); 
    } 
} 

這似乎落得C3P0 FallbackMLog - > System.err的。還沒有找到一種方法來使用這種方法獲取日誌到log4j。