web-dev-qa-db-fra.com

comment désactiver la connexion Java c3p0 lib pooling connection lib?

salut à tous, je ne fais que commencer avec c3p0 pour la mise en commun des connexions aux bases de données. Il s'attache actuellement à ma sortie log4j. Comment définir la déconnexion ou au moins au niveau SÉVÈRE uniquement pour c3p0? J'ai essayé de modifier le fichier de propriétés, mais je ne suis pas sûr qu'il soit correctement récupéré.

des idées sur la meilleure façon de l'éteindre?

merci

MISE À JOUR: cela semble fonctionner dans le fichier log4j.properties

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

log4j.logger.com.mchange=INFO
36
James

Si vous utilisez un fichier log4j.xml, vous pouvez simplement définir un enregistreur pour le package c3po:

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

Il existe des méthodes analogues pour log4j.properties. Je pense que c'est juste:

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

Pour ceux qui n'utilisent PAS de fichier de configuration, il suffit d'ajouter les éléments suivants dans le code, avant de charger le pool de connexions.

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

Je recevais des messages comme celui-ci:

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

Cela m'a fait penser que C3P0 enregistrait ces messages. En fait, le message provient du connecteur mysql car j'ai activé le profilage en utilisant une chaîne de connexion comme celle-ci:

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

Retirer ?profileSQL=true pour empêcher l'enregistrement de ces messages.

4
Sarel Botha

J'ai résolu un problème avec la ligne de code:

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

J'utilise log4j dans mon application.

2
crimean

Je travaille sur clojure, via korma et pour la vie de mon, je n'ai pas pu charger de fichiers de propriétés (je suis nouveau sur clojure donc je me blâme). Si vous êtes dans un bateau similaire, ce qui suit pourrait vous aider.

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

Il s'agit essentiellement d'un port fermé de la réponse de Philippe Carrière ci-dessus, merci beaucoup!

1
a4word

Vous pouvez définir le niveau de journalisation en ajoutant les lignes suivantes dans log4j.xml La journalisation au moins au niveau d'erreur est souhaitée.

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

Si vous voulez vraiment désactiver la propriété de l'ensemble de journalisation c3P0 com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL=OFF

dans c3p0-Config.properties

ou vous pouvez directement le définir dans le code en tant que propriété système System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL",MLevel.OFF);

1
Prashant Pandey