Как отключить ведение журнала 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
.