Как отключить ведение журнала java-драйверов mongoDB?

Я пытаюсь отключить выходные данные журнала mongo-java-driver-3.0.0.

Я попытался установить те, что были в начале моего приложения, перед загрузкой драйверов mongo, но это не помогло.

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

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

Я получаю такие журналы:

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}]

Итак, моя консоль полностью заполнена журналами mongo, и я не могу читать что-либо.

Ответ 1

Итак, это решило эту проблему:

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

Вы можете установить Level в более высокий Level, если вы хотите скрыть все журналы.

Ответ 2

Чтобы сделать эту часть кода, вам нужно иметь Logback. (Если проект maven)

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.5</version>
</dependency>

Затем, если вы хотите отключить ведение журнала Mongo, вы должны сделать что-то вроде этого:

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

Снова, чтобы быть ясным, вот список импорта для этого кода:

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;

Это решение для mongo java driver 3.0.0 и ^.

Ответ 3

Если вам нужен динамический подход, вы можете перебирать регистраторы и устанавливать их уровень. Или вы можете установить уровни вручную. Вот регистраторы драйверов 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);

Ответ 4

если вы используете ресурс xml для настройки Logback, вы можете легко сделать это, добавив следующее:

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

к вашей конфигурации.

Ответ 5

используйте импортированный ниже

импортировать java.util.logging.Logger;

используйте код ниже.

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

Ответ 6

Для тех, кто по-прежнему сталкивается с проблемой регистрации, вам необходимо установить уровень журнала org.mongodb.driver на нечто большее, например WARN или ERROR. Класс com.mongodb больше не используется, даже если он все еще записан в журналах.

См. последний ответ этого сообщения: Настроить ведение журнала для драйвера Java MongoDB

Ответ 7

Я решил его использовать,

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.

Ответ 8

Чтобы отключить все регистраторы:

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

Ответ 9

В моем случае MongoDB driver 3.5.0, SLF4j+Log4j12 было достаточно добавить:

log4j.logger.org.mongodb.driver=OFF

в конфигурационном файле Log4j .properties.