James
James

Reputation: 15505

how do I turn off logging in java c3p0 connection pooling lib?

hey all, I'm just getting started with c3p0 for database connection pooling. It's attaching itself to my log4j output currently. How do I set logging off or at least to SEVERE level only for c3p0? I tried tweaking the properties file but not sure it's being picked up properly.

any ideas on how best to turn it off?

thanks

UPDATE: this seems to work in the log4j.properties file

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

log4j.logger.com.mchange=INFO

Upvotes: 39

Views: 34309

Answers (8)

Gico
Gico

Reputation: 1394

The following solution did work:

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

But none of other configuration solution work for me. At the end i successfully suppressed it by creating file mchange-log.properties in my classpath (src/test/resources) with the following content:

com.mchange.v2.log.MLog=com.mchange.v2.log.FallbackMLog
com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=OFF

I found solution at: http://springoftech.blogspot.com/2012/10/using-c3p0-with-logback.html

Hope somebody find it useful.

Upvotes: 0

Bieber Taylor
Bieber Taylor

Reputation: 17

If you are using Spring, you can disable c3p0 logging by configuring it in application.properties:

logging.level.com.mchange.v2.c3p0=off

Upvotes: 0

Philippe Carriere
Philippe Carriere

Reputation: 3720

For those who are NOT using a configuration file, just to add the following in the code, before loading the connection pool.

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

Upvotes: 41

fasseg
fasseg

Reputation: 17761

If you use a log4j.xml file you can simple define a logger for the c3po package:

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

There are analogous methods for log4j.properties. I think it's just:

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

Upvotes: 24

a4word
a4word

Reputation: 74

I am working on clojure, through korma and for the life of my I could not get any properties files to load (I am new to clojure so I blame myself). If you are in a similar boat, the following might help you out.

(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")))

The is basically a clojure port of Philippe Carriere's answer above, thank you so much!

Upvotes: 1

Sarel Botha
Sarel Botha

Reputation: 12710

I was getting messages like the following:

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

This made me think that C3P0 was logging these messages. Actually the message is coming from the mysql connector because I enabled profiling by using a connection string like this:

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

Remove ?profileSQL=true to make it stop logging these messages.

Upvotes: 4

Prashant Pandey
Prashant Pandey

Reputation: 37

You can set log level by adding following lines in log4j.xml Logging at least at Error level is desired.

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

If you really want to turn off c3P0 logging set property com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=OFF

in c3p0-Config.properties

or you can directly set this in code as an System property System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL",MLevel.OFF);

Upvotes: 1

crimean
crimean

Reputation: 21

I fixed problem with line of code:

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

I am using log4j in my app.

Upvotes: 2

Related Questions