web-dev-qa-db-ja.com

mongoDBを無効にする方法Javaドライバーのロギング?

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ログが完全に詰め込まれていて、何も読めません。

18
itaied

これでこの問題は解決しました:

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に設定できます。

7
itaied

コードのこの部分を機能させるには、Logbackが必要です。 (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>

次に、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.LoggerContext;
import org.slf4j.LoggerFactory;

このソリューションは、mongo Java driver 3.0.0 and ^。

編集:レベルがERRORに設定された1つのライナーです。

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

動的なアプローチが必要な場合は、ロガーを反復処理してレベルを設定できます。または、レベルを手動で設定できます。 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);
8
yuceel

xmlリソースを使用してLogbackを構成する場合、これを追加することで簡単に実行できます。

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

あなたの構成に。

5
Mohammad Rafigh

を使用して解決しました

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.
3
Hemant Thorat

まだロギングの問題に直面している人のために、org.mongodb.driverのログレベルをWARNやERRORのような高いレベルに設定する必要があります。クラスcom.mongodbは、ログにまだ書き込まれている場合でも使用されなくなりました。

この投稿の最後の回答を参照してください: MongoDBのロギングを構成するJava driver

2
Christophe

以下のインポートを使用

import Java.util.logging.Logger;

以下のコードを使用してください。

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

2
yoga

すべてのロガーをオフにするには:

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

私の場合、 MongoDB driver 3.5.0SLF4j+Log4j12、追加するだけで十分です。

log4j.logger.org.mongodb.driver=OFF

私のLog4j .properties構成ファイル。

0