如何关闭java c3p0连接池lib中的日志记录?

时间:2010-06-04 17:13:08

标签: java c3p0

嘿所有,我刚刚开始使用c3p0进行数据库连接池。它当前附加到我的log4j输出。如何为c3p0设置注销或至少为SEVERE级别?我尝试调整属性文件但不确定它是否被正确拾取。

关于如何最好地关闭它的任何想法?

感谢

更新: 这似乎适用于log4j.properties文件

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

log4j.logger.com.mchange=INFO

6 个答案:

答案 0 :(得分:35)

对于那些不使用配置文件的人,只需在加载连接池之前在代码中添加以下内容。

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);

答案 1 :(得分:22)

如果您使用log4j.xml文件,您可以简单地为c3po包定义记录器:

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

log4j.properties有类似的方法。我认为这只是:

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

答案 2 :(得分: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以停止记录这些消息。

答案 3 :(得分:2)

我修复了代码行的问题:

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

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

答案 4 :(得分: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);

答案 5 :(得分:1)

我正在研究clojure,通过korma和我的生活我无法加载任何属性文件(我是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上面的回答,非常感谢你!