在 Eclipse 中从 MongoDB 禁用控制台日志记录

Disable Console Logging from MongoDB in Eclipse

我正在使用 Mongo 数据库来存储来自我的 Java 程序的信息。 我正在使用 Eclipse 和 MongoDB 3.0 我遇到的问题是,每当我的程序与 Mongo 进行任何交互时,它都会用来自 JULLogger 的红色文本填充控制台。

我目前没有任何代码来设置记录器级别,因为我在此处或在线其他地方找到的所有示例都给出了错误:

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

   "The method getLogger(String) is undefined for the type Logger"

这是输出:

    Dec 16, 2015 8:49:58 AM com.mongodb.diagnostics.logging.JULLogger log
    INFO: Cluster created with settings {hosts=[127.0.0.1:27017],     
    mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
    Dec 16, 2015 8:49:58 AM com.mongodb.diagnostics.logging.JULLogger log
    INFO: No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description  
    ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, all=[ServerDescription{address=127.0.0.1:27017, 
    type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out
    Dec 16, 2015 8:49:58 AM com.mongodb.diagnostics.logging.JULLogger log
    INFO: Opened connection [connectionId{localValue:1, serverValue:117}] to 127.0.0.1:27017
    Dec 16, 2015 8:49:58 AM com.mongodb.diagnostics.logging.JULLogger log
    INFO: Monitor thread successfully connected to server with description 
    ServerDescription{address=127.0.0.1:27017, type=STANDALONE, 
    state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 0, 7]}, 
    minWireVersion=0, maxWireVersion=3, electionId=null,    
    maxDocumentSize=16777216, roundTripTimeNanos=587005}
    Dec 16, 2015 8:49:58 AM com.mongodb.diagnostics.logging.JULLogger log
    INFO: Opened connection [connectionId{localValue:2, serverValue:118}] to 127.0.0.1:27017
    Document{{_id=567045259311932a6406b4e2, time=16:51:48, data=[31C, 38C, 20C]}}
    Dec 16, 2015 8:49:58 AM com.mongodb.diagnostics.logging.JULLogger log
    INFO: Closed connection [connectionId{localValue:2, serverValue:118}] to        
    127.0.0.1:27017 because the pool has been closed.

谁能告诉我如何从我的控制台中删除所有 Mongo 日志?

非常感谢罗斯的建议:

java.util.logging.Logger.getLogger("org.mongodb.driver").setLevel(java.util.log‌​ging.Level.SEVERE);

事实上正确的代码是这样的,所以只是一个小改动:

java.util.logging.Logger.getLogger("org.mongodb.driver").setLevel(Level.SEVERE);

我可以确认我在运行时不再从控制台中的 mongo 收到任何日志。

您可以尝试这个解决方案只需在您的 pom 文件中添加以下依赖项或手动添加此 jar

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-nop</artifactId>
    <version>1.7.22</version>
</dependency>

阅读这些

  1. http://grokbase.com/t/gg/mongodb-user/153eg0pczd/deactivate-logging-in-the-java-driver
  2. https://www.slf4j.org/manual.html#swapping

更多更详细的解释

我遇到过类似的问题,它对我有用。

我尝试了以上所有方法,但 none worked.the 最终起作用的是

最终对我有用的如下。

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

请同时注意导入:

    import ch.qos.logback.classic.Level;
    import ch.qos.logback.classic.LoggerContext;
    import org.slf4j.LoggerFactory;