39

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
James
  • 15,085
  • 25
  • 83
  • 120

7 Answers7

41

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);
Philippe Carriere
  • 3,712
  • 4
  • 25
  • 46
23

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
Stijn Geukens
  • 15,454
  • 8
  • 66
  • 101
fasseg
  • 17,504
  • 8
  • 62
  • 73
4

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.

Sarel Botha
  • 12,419
  • 7
  • 54
  • 59
2

I fixed problem with line of code:

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

I am using log4j in my app.

crimean
  • 21
  • 1
1

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!

boechat107
  • 1,654
  • 14
  • 24
a4word
  • 74
  • 3
  • 1
    Using Korma I needed to use this code before requiring its namespaces. – boechat107 Mar 19 '15 at 20:56
  • Yes, sorry forgot to mention that. If Korma is loaded, then the defaults so the lines above won't overwrite what is already set. – a4word Mar 20 '15 at 21:52
1

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

CoolBeans
  • 20,654
  • 10
  • 86
  • 101
  • Adding one more additional line in properties file worked for me , `com.mchange.v2.log.MLog=com.mchange.v2.log.FallbackMLog` – Sabir Khan Aug 09 '16 at 08:12
0

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

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