2016-10-12 2 views
0

Ich benutze den java mongodb Treiber 3.2.2 (Kompiliergruppe: 'org.mongodb', Name: 'mongo-java-driver', Version: "3.2.2) und scheint die Protokollierung, die vom Treiber kommt, nicht auszuschalten. Mein Programm ist wie folgt:Wie kontrolliere ich mongo java Treiberprotokollierung mit java.util.logging Eigenschaften

public static void main(String args[]) { 
    Enumeration<String> names = LogManager.getLogManager().getLoggerNames(); 

    Logger l = Logger.getLogger("org.mongodb.driver"); 
    l.info("Hello INFO!"); 
    l.warning("Hello WARNING!"); 

    SoundDB db = new SoundDB(); 
    db.doMain(args); 

    while (names.hasMoreElements()) 
     System.out.println("Name = " + names.nextElement()); 

    l.info("Hello INFO!"); 
    l.warning("Hello WARNING!"); 
} 

und wenn sie mit -Djava.util.logging.config.file = logging.properties gestartet, produziert

Oct 12, 2016 7:44:22 PM com.ibm.watson.iot.sound.tools.SoundDB main 
WARNING: Hello WARNING! 
Loading caa properties from file:/C:/Users/IBM_ADMIN/git/iot-sound/IoT-Sound/caa.properties 
19:44:23.889 [main] INFO org.mongodb.driver.cluster - Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500} 
19:44:23.971 [main] DEBUG org.mongodb.driver.cluster - Updating cluster description to {type=UNKNOWN, servers=[{address=localhost:27017, type=UNKNOWN, state=CONNECTING}] 
19:44:24.030 [main] INFO org.mongodb.driver.cluster - No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, all=[ServerDescription{address=localhost:27017, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out 
19:44:24.042 [cluster-ClusterId{value='57fecad73df6efadcc807d9e', description='null'}-localhost:27017] INFO org.mongodb.driver.connection - Opened connection [connectionId{localValue:1, serverValue:1261}] to localhost:27017 
19:44:24.042 [cluster-ClusterId{value='57fecad73df6efadcc807d9e', description='null'}-localhost:27017] DEBUG org.mongodb.driver.cluster - Checking status of localhost:27017 
19:44:24.044 [cluster-ClusterId{value='57fecad73df6efadcc807d9e', description='null'}-localhost:27017] INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 2, 4]}, minWireVersion=0, maxWireVersion=4, maxDocumentSize=16777216, roundTripTimeNanos=1672627} 
19:44:24.046 [cluster-ClusterId{value='57fecad73df6efadcc807d9e', description='null'}-localhost:27017] DEBUG org.mongodb.driver.cluster - Updating cluster description to {type=STANDALONE, servers=[{address=localhost:27017, type=STANDALONE, roundTripTime=1.7 ms, state=CONNECTED}] 
... 
Name = javax.management.monitor 
Name = javax.management.mlet 
Name = org.bson.ObjectId 
Name = global 
Name = org.mongodb.driver 
Name = javax.management 
Name = javax.management.mbeanserver 
Name = 
Oct 12, 2016 7:44:24 PM com.ibm.watson.iot.sound.tools.SoundDB main 
WARNING: Hello WARNING! 

logging.properties enthält

.level=WARNING 
handlers=java.util.logging.ConsoleHandler 
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter 
java.util.logging.ConsoleHandler.level=ALL 

Der Logger org.mongodb.driver ist korrekt auf WARNING gesetzt, da nur meine Warnmeldungen ausgedruckt werden und nicht die Info-Nachrichten. Es gibt keine Änderung (wie ich erwarten würde), wenn ich die folgenden Eigenschaften hinzu:

org.bson.ObjectId.level=WARNING 
org.mongodb.driver.level=WARNING 

Also, hat jemand eine Idee, was ich falsch mache? Vielen Dank.

Antwort

2

Von: http://mongodb.github.io/mongo-java-driver/3.2/driver/reference/management/logging/

„Standardmäßig ist die Protokollierung über den beliebten SLF4J API aktiviert Der Einsatz von SLF4J ist optional, der Fahrer SLF4J verwenden wird, wenn der Fahrer das Vorhandensein von SLF4J im Classpath erkennt Andernfalls.. Der Treiber fällt zurück auf JUL (java.util.logging) "

Stellen Sie sicher, dass Sie keine slf4j-Abhängigkeit in Ihrem Klassenpfad haben (direkt oder über andere Bibliotheken). Falls Sie slf4j haben, müssen Sie slf4j anstelle der Java-Protokollierung konfigurieren, um die Protokollierungsstufe einzurichten.

slf4j ist nur Logging-API, tatsächliche Protokollierung könnte von jeder Implementierung (JUG, Log4J, Logback) unterstützt werden. Weitere Informationen finden Sie unter https://dzone.com/articles/how-configure-slf4j-different. Was tatsächlich verwendet wird, hängt von Ihrem Klassenpfad ab. Wenn Sie Maven verwenden, können Sie es finden, indem Sie Abhängigkeitshierarchie erhalten.

+0

Ja, Mongo verwendet SLF4J, das eines der verfügbaren Protokollframeworks abruft. In meinem Fall wurde Logback durch eine andere Abhängigkeit und Boom hinzugefügt, mein Logging änderte sich. Können wir alle lachen? Ich habe Logbuch gelöscht und ich benutze JUL wieder und alles ist gut in meiner Welt. –

Verwandte Themen