2010-06-04 243 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