2012-03-03 18 views
27

¿Puedo configurar el controlador MongoDB Java para generar mensajes útiles (para la depuración), idealmente utilizando uno de los marcos de registro estándar? Principalmente me interesaría ver cada consulta que sale, cuántos datos se recibieron y cuánto tiempo tomó, así como cualquier código de error.Configurar el registro para el controlador MongoDB Java

Respuesta

22

Es necesario configurar un par de propiedades del sistema antes de cargar cualquiera de las clases de Java conductor MongoDB:

// Enable MongoDB logging in general 
System.setProperty("DEBUG.MONGO", "true"); 

// Enable DB operation tracing 
System.setProperty("DB.TRACE", "true"); 

Después de hacer que el controlador utilizará the standard Java logging framework para registrar mensajes.

Desafortunadamente, por lo que puedo decir por el código del controlador de Java, la granularidad del registro no es del todo buena, por ejemplo, no puede registrar operaciones de forma selectiva en una colección específica.

+2

Se pregunta si alguien ha tratado de conseguir este trabajo en Scala, acceder al controlador a través de java casbah, con un API de registro SLF4J? Parece que no puedo obtener mensajes registrados en mi marco de registro cuando no uso JUL. – Brett

+1

Estoy usando datos mongodb-spring pero esto no funciona, no obtengo ningún registro ... – user1955934

15

Otra forma de hacer establecer el nivel de registro de MongoDB:

import java.util.logging.Logger; 
Logger mongoLogger = Logger.getLogger("com.mongodb"); 
mongoLogger.setLevel(Level.SEVERE); // e.g. or Log.WARNING, etc. 

Usted no tiene que hacer esto antes de usar cualquiera de las clases de controladores, puede establecer niveles de registro/cambiar en cualquier momento.

+2

Esto sería mejor con un nombre de paquete para el registrador. ¿Es JUL? SLF4j? – bmargulies

+3

Intenté eso pero no funciona para mí. ¿Es necesario llamar esto después de que mongo se haya inicializado o algo así? –

+0

Corrigiéndome a mí mismo, puedo establecer el nivel pero no puedo establecer el filtro. –

16

¿Alguien todavía enfrenta este problema con la nueva versión del controlador mongodb 3.x?

definen un registrador para el paquete de controladores mongo en log4j.properties

log4j.logger.org.mongodb.driver=INFO 

com.mongodb ha cambiado a org.mongodb.

+0

Lo agregué en mi log4j.properties y no sucede nada cuando realizo consultas ... no veo ningún registro, excepto mis mensajes de registro personalizados que agregué ... – user1955934

5

Siguiendo la línea funciona para mí,

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. 
Cuestiones relacionadas