2010-06-04 120 views
32

嘿所有,我剛剛開始使用c3p0進行數據庫連接池。它現在將自己附加到我的log4j輸出中。我如何設置關閉或者至少將關閉級別設置爲c3p0?我嘗試調整屬性文件,但不知道它被正確拾取。如何關閉java c3p0連接池中的日誌記錄?

有關如何最好地關閉它的任何想法?

感謝

UPDATE: 這似乎在log4j.properties工作文件

log4j.logger.com.mchange.v2.c3p0.impl=INFO 

log4j.logger.com.mchange=INFO 

回答

20

如果您使用的log4j.xml文件,你可以簡單的定義一個logger在C3PO包:

<logger name="com.mchange.v2.c3p0"> 
    <level value="SEVERE"/> 
</logger> 

有類似的log4j.properties方法。我認爲這只是:

log4j.logger.com.mchange.v2.c3p0=SEVERE 
+1

我目前正在使用一個log4j.properties文件,任何想法如何在那裏做到這一點? – James 2010-06-04 17:27:28

+2

增加了一個log4j。屬性記錄器示例 – fasseg 2010-06-04 17:30:54

+0

謝謝!我不得不稍微調整它,但log4j.properties文件工作:) – James 2010-06-04 17:39:31

1

您可以通過至少在錯誤級別所需的的log4j.xml 日誌添加以下行設置日誌級別。

< category name="com.mchange" additivity="false"> 
     < priority value="ERROR"/> 
     < appender-ref ref="ASYNC"/> 
    </ category> 

如果你真的要關閉C3P0日誌記錄設置屬性com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=OFF

在c3p0-Config.properties

,或者你可以直接設置在此代碼作爲系統屬性System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL",MLevel.OFF);

+0

不適合我。 – 2011-05-16 15:57:10

+0

在屬性文件中添加一個額外的行爲我工作,'com.mchange.v2.log.MLog = com.mchange.v2.log.FallbackMLog' – 2016-08-09 08:12:51

2

我修復了一行代碼問題:

com.mchange.v2.log.MLog.getLogger().setLevel(MLevel.INFO); 

我在我的應用程序中使用log4j。

+1

是的,這適用於我! – surfealokesea 2013-07-11 14:24:23

33

對於那些不使用配置文件的人,只需在加載連接池之前在代碼中添加以下內容即可。

Properties p = new Properties(System.getProperties()); 
p.put("com.mchange.v2.log.MLog", "com.mchange.v2.log.FallbackMLog"); 
p.put("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "OFF"); // Off or any other level 
System.setProperties(p); 
+0

'import java.util.Properties;' – thatWiseGuy 2017-04-22 19:59:36

4

我得到的消息類似如下:

Tue Feb 12 13:42:01 EST 2013 INFO: Profiler Event: [FETCH] at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76) duration: 0 ms, connection-id: 67, statement-id: 23, resultset-id: 27 

這讓我覺得C3P0是記錄這些消息。實際上,消息從MySQL連接器來,因爲我啓用了剖析通過使用連接字符串是這樣的:

jdbc:mysql://localhost/database?profileSQL=true 

刪除?profileSQL=true,使其停止記錄這些消息。

1

我在clojure工作,通過科爾馬和我的生活我無法獲得任何屬性文件加載(我是clojure新,所以我責怪自己)。如果你在一條類似的船上,以下可能會幫助你。

(System/setProperties 
    (doto (java.util.Properties. (System/getProperties)) 
    (.put "com.mchange.v2.log.MLog" "com.mchange.v2.log.FallbackMLog") 
    (.put "com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL" "OFF"))) 

這基本上是Philippe Carriere上面答案的clojure端口,非常感謝!

+1

使用Korma我需要在使用這個代碼之前要求它的命名空間。 – boechat107 2015-03-19 20:56:39

+0

是的,抱歉忘了提及。如果Korma被加載,那麼上面的行不會覆蓋已經設置的內容。 – a4word 2015-03-20 21:52:22