大家好,我刚刚开始使用 c3p0 进行数据库连接池。它目前附加到我的 log4j 输出。如何仅为 c3p0 设置注销或至少设置为 SEVERE 级别?我尝试调整属性文件,但不确定它是否被正确拾取。
关于如何最好地关闭它的任何想法?
谢谢
更新:这似乎在 log4j.properties 文件中工作
log4j.logger.com.mchange.v2.c3p0.impl=INFO
log4j.logger.com.mchange=INFO
对于那些不使用配置文件的人,只需在代码中添加以下内容,然后再加载连接池。
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);
如果您使用 log4j.xml 文件,您可以简单地为 c3po 包定义一个记录器:
<logger name="com.mchange.v2.c3p0">
<level value="SEVERE"/>
</logger>
log4j.properties 有类似的方法。我认为这只是:
log4j.logger.com.mchange.v2.c3p0=SEVERE
我收到如下消息:
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
以使其停止记录这些消息。
我修复了代码行的问题:
com.mchange.v2.log.MLog.getLogger().setLevel(MLevel.INFO);
我在我的应用程序中使用 log4j。
我正在使用 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答案的clojure端口,非常感谢!
您可以通过在 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);