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
폴더를 누릅니다.
slf4j를 simple 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
'programing' 카테고리의 다른 글
원격 변경사항을 삭제하고 파일을 "해결됨"으로 표시하려면 어떻게 해야 합니까? (0) | 2023.07.05 |
---|---|
Next App을 초기화하기 전에 창 너비를 가져오고 저장하는 방법은 무엇입니까? (0) | 2023.07.05 |
몽고 콤플렉스 정렬? (0) | 2023.06.30 |
Ionic 2 - 앱용 글로벌 NavBar (0) | 2023.06.30 |
Firebase용 클라우드 기능 - getaddrinfo ENOTFound (0) | 2023.06.30 |