programing

mongoDB Java 드라이버 로깅을 비활성화하는 방법은 무엇입니까?

muds 2023. 6. 30. 22:40
반응형

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

그래서 제 콘솔은 몽고로그로 가득 차 있고 저는 아무것도 읽을 수 없습니다.

코드의 이 부분을 작동시키려면 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 드라이버 3.0.0 및 ^용입니다.

편집: 여기 레벨이 ERROR로 설정된 라이너 하나가 있습니다.

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

동적 접근이 필요한 경우 로거를 반복하고 수준을 설정할 수 있습니다.또는 레벨을 수동으로 설정할 수 있습니다.몽고 드라이버 로거는 다음과 같습니다.

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

이것으로 이 문제가 해결되었습니다.

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모든 로그를 숨기려는 경우.

저는 그것을 사용하여 해결했습니다.

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.

xml 리소스를 사용하여 로그백을 구성하는 경우 다음을 추가하여 쉽게 구성할 수 있습니다.

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

사용자의 구성에 적합합니다.

Mongo Driver의 Spring Boot 응용 프로그램에 대한 디버그 로깅을 비활성화하려면 에서 아래 구성을 설정합니다.logback-spring.xml아래와 같이:

<logger name="org.mongodb" level="WARN" />

그러면 콘솔 로거 및 구성 파일에 정의된 다른 로거에 대한 로깅이 비활성화됩니다.logback-spring.xml

여전히 로깅 문제에 직면한 사람들을 위해 org.mongodb.driver의 로그 수준을 WARN 또는 ERROR와 같이 더 높은 수준으로 설정해야 합니다.com.mongodb 클래스는 로그에 계속 기록되어 있더라도 더 이상 사용되지 않습니다.

이 게시물의 마지막 답변을 참조하십시오. MongoDB Java 드라이버에 대한 로깅 구성

아래 가져오기 사용

import java.util.logging.Logger;

아래를 코드로 사용합니다.

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

저 같은 경우에는.MongoDB driver 3.5.0,SLF4j+Log4j12다음을 추가하면 충분합니다.

log4j.logger.org.mongodb.driver=OFF

내 로그4j에서.properties구성 파일.

"com.mongodb.client"를 통해 Mongo 클라이언트를 가져옵니다.몽고 클라이언트"

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;

import java.util.function.Consumer;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Quick
{

    public static void main(String[] args)
    {
        Logger.getLogger("org.mongodb.driver").setLevel(Level.WARNING);
        try (MongoClient mongo = MongoClients.create())
        {
            mongo.listDatabaseNames().forEach((Consumer<String>) System.out::println);
        }
    }
}

제가 이 답변을 작성했을 때 드라이버의 최신 버전인 3.12.2가 있는지 확인하십시오.

<dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.12.2</version>
</dependency>

위의 내용이 작동하지 않으면 다른 로깅 모듈을 사용하고 있을 수 있습니다. 예를 들어 slf4j를 사용하는 경우 리소스 폴더 내에 "simpleLogger.properties"라는 이름의 파일을 만들고 이 줄을 추가하십시오.

org.slf4j.simpleLogger.defaultLogLevel = warn

이를 위해 logback.xml을 사용할 수 있습니다.예를 들어, 내 파일은

<configuration>
    <logger name="org.mongodb.driver.cluster" level="INFO"/>
    <logger name="org.mongodb.driver.protocol" level="INFO"/>
    <logger name="org.mongodb.driver.connection" level="INFO"/>
    <logger name="org.mongodb.driver.operation" level="INFO"/>
</configuration>

에넣어요세에 .resources폴더를 누릅니다.

slf4jsimple logger.properties 파일과 함께 사용하여 이 행을 추가하면 작동합니다.

org.slf4j.simpleLogger.log.org.mongodb.driver=error

일반 로그 수준은 다른 줄에 유지됩니다.

org.slf4j.simpleLogger.defaultLogLevel=info

부츠와 , 스링부트포함에서, 인.application.yaml((으)로 OFF):

logging:
  level:
    org:
      mongodb:
        driver: WARN

언급URL : https://stackoverflow.com/questions/30137564/how-to-disable-mongodb-java-driver-logging

반응형