web-dev-qa-db-fra.com

Comment désactiver la journalisation du pilote Java mongoDB?

J'essaie de désactiver les sorties de journal de mongo-Java-driver-3.0.0.

J'ai essayé de définir ces paramètres au début de mon application, avant de charger les pilotes mongo, mais cela n'a pas aidé.

    // Enable MongoDB logging in general
    System.setProperty("DEBUG.MONGO", "false");

    // Enable DB operation tracing
    System.setProperty("DB.TRACE", "false");  

Je reçois ce genre de bûches:

11:01:15.406 [pool-1-thread-1] DEBUG org.mongodb.driver.protocol.query - Sending query of namespace susudev.Players on connection [connectionId{localValue:2, serverValue:28}] to server localhost:27017
11:01:15.406 [pool-1-thread-1] DEBUG org.mongodb.driver.protocol.query - Query completed

11:01:25.174 [cluster-ClusterId{value='554dbecb1b554f11e86c3a69', description='null'}-localhost:27017] DEBUG org.mongodb.driver.cluster - Checking status of localhost:27017
11:01:25.177 [cluster-ClusterId{value='554dbecb1b554f11e86c3a69', description='null'}-localhost:27017] DEBUG org.mongodb.driver.cluster - Updating cluster description to  {type=STANDALONE, servers=[{address=localhost:27017, type=STANDALONE, roundTripTime=0.6 ms, state=CONNECTED}]

Donc, ma console est complètement remplie de bûches de mongo et je ne peux rien lire.

17
itaied

Donc, cela a résolu ce problème:

import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;

...

static Logger root = (Logger) LoggerFactory
        .getLogger(Logger.ROOT_LOGGER_NAME);

static {
    root.setLevel(Level.INFO);
}

Vous pouvez définir Level sur une Level supérieure si vous souhaitez masquer tous les journaux.

7
itaied

Pour que cette partie de code fonctionne, vous devez avoir Logback . (Si projet maven)

<dependency>
    <groupId>org.Apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

Ensuite, si vous souhaitez uniquement désactiver la journalisation du pilote Mongo, procédez comme suit: 

LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
Logger rootLogger = loggerContext.getLogger("org.mongodb.driver");
rootLogger.setLevel(Level.OFF);

Encore une fois pour être clair, voici la liste des importations pour que ce code fonctionne:

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.LoggerContext;
import org.slf4j.LoggerFactory;

Cette solution concerne le pilote Java Mongo 3.0.0 et ^.

Edit: Voici une ligne avec le niveau défini sur ERROR.

((LoggerContext) LoggerFactory.getILoggerFactory()).getLogger("org.mongodb.driver").setLevel(Level.ERROR);
11
chneau

Si vous avez besoin d'une approche dynamique, vous pouvez effectuer une itération sur les enregistreurs et en définir le niveau. Ou vous pouvez définir les niveaux manuellement. Voici les enregistreurs de pilotes mongo:

LogManager.getLogger("org.mongodb.driver.connection").setLevel(org.Apache.log4j.Level.OFF);
LogManager.getLogger("org.mongodb.driver.management").setLevel(org.Apache.log4j.Level.OFF);
LogManager.getLogger("org.mongodb.driver.cluster").setLevel(org.Apache.log4j.Level.OFF);
LogManager.getLogger("org.mongodb.driver.protocol.insert").setLevel(org.Apache.log4j.Level.OFF);
LogManager.getLogger("org.mongodb.driver.protocol.query").setLevel(org.Apache.log4j.Level.OFF);
LogManager.getLogger("org.mongodb.driver.protocol.update").setLevel(org.Apache.log4j.Level.OFF);
7
yuceel

si vous utilisez une ressource XML pour configurer Logback, vous pouvez facilement le faire en ajoutant ceci:

<logger name="org.mongodb.driver.cluster" level="OFF" />

à votre configuration.

3
Mohammad Rafigh

utiliser l'import ci-dessous

import Java.util.logging.Logger;

utilisez le code ci-dessous.

Logger mongoLogger = Logger.getLogger ("com.mongodb"); mongoLogger.setLevel (Level.SEVERE);

2
yoga

Pour ceux qui rencontrent toujours le problème de la journalisation, vous devez définir le niveau de journalisation de org.mongodb.driver sur une valeur plus élevée, comme WARN ou ERROR. La classe com.mongodb n'est plus utilisée même si elle est toujours écrite dans les journaux.

Voir la dernière réponse de cet article: Configurez la journalisation pour le pilote Java MongoDB

1
Christophe Thiry

Je l'ai résolu en utilisant,

import Java.util.logging.Logger;
import Java.util.logging.Level;

Logger mongoLogger = Logger.getLogger( "org.mongodb.driver" );
mongoLogger.setLevel(Level.SEVERE); // e.g. or Log.WARNING, etc.
1
Hemant Thorat

Pour désactiver tous les enregistreurs:

final LogManager lm = LogManager.getLogManager();
for( final Enumeration<String> i = lm.getLoggerNames(); i.hasMoreElements(); ) {
   lm.getLogger( i.nextElement()).setLevel( Level.OFF );
}
0
Aubin

Dans mon cas, MongoDB driver 3.5.0, SLF4j+Log4j12, il suffit d'ajouter:

log4j.logger.org.mongodb.driver=OFF

dans mon fichier de configuration Log4j .properties.

0
Giorgio Vespucci