Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何禁用mongoDB java驱动程序日志记录?_Java_Mongodb_Logging - Fatal编程技术网

如何禁用mongoDB java驱动程序日志记录?

如何禁用mongoDB java驱动程序日志记录?,java,mongodb,logging,Java,Mongodb,Logging,我正在尝试禁用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");

我正在尝试禁用
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日志,我什么都看不懂。

如果您需要动态方法,您可以迭代记录程序并设置它们的级别。或者您可以手动设置级别。以下是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);
使用下面的导入

导入java.util.logging.Logger

使用下面的代码

Logger-mongogger=Logger.getLogger(“com.mongodb”);
蒙古人。设定水平(严重水平)

所以这解决了这个问题:

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

如果希望隐藏所有日志,可以将
级别设置为更高的
级别。

对于仍面临日志记录问题的用户,必须将org.mongodb.driver的日志级别设置为更高的级别,如警告或错误。com.mongodb类不再使用,即使它仍然写入日志中


请参阅本文的最后一个答案:

要使这部分代码正常工作,您需要有Logback。 (如果是maven项目)

同样要明确的是,以下是此代码的导入列表:

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.LoggerContext;
import org.slf4j.LoggerFactory;
此解决方案适用于mongo java驱动程序3.0.0和^

编辑:这是一个级别设置为错误的单行线

((LoggerContext) LoggerFactory.getILoggerFactory()).getLogger("org.mongodb.driver").setLevel(Level.ERROR);
我已经用

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.

要关闭所有记录器,请执行以下操作:

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

如果您使用xml资源配置Logback,您可以通过添加以下内容轻松完成:


在我的例子中,
MongoDB驱动程序3.5.0
SLF4j+Log4j12
,添加以下内容就足够了:

log4j.logger.org.mongodb.driver=OFF

在我的Log4j
.properties
配置文件中。

通过“com.mongodb.client.MongoClient”导入您的Mongo客户端


要禁用Mongo驱动程序的调试登录spring引导应用程序,请在
logback spring.xml
中设置以下配置:

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


这将禁用登录控制台记录器以及配置文件
logback spring.xml

中定义的其他记录器。您是如何解决此恼人问题的@Candroid@jipr311添加了一个新的答案有人知道这个输出的实际含义吗?也许你也可以配置集群和连接检查?我不明白,这是slf4j上的log4j吗?其中是ch.qos.logback.classic.Level;来自使用log4j的logback库和slf4jam,我通过设置log4j属性:props.setProperty(“log4j.logger.org.mongodb.driver”,“WARN”);你们救了我一天。我尝试了一切,这是唯一的解决办法worked@arunkumarsambu从
build.gradle
中删除
实现组:'org.slf4j',名称:'slf4j simple',版本:'1.8.0-beta2'
对我有帮助。为我工作--驱动程序3.8.1
log4j.logger.org.mongodb.driver=OFF
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);
        }
    }
}
<dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.12.2</version>
</dependency>
org.slf4j.simpleLogger.defaultLogLevel = warn
<logger name="org.mongodb" level="WARN" />