2012-03-03 31 views
27

可以将MongoDB Java驱动程序配置为输出有用(用于调试)消息,理想情况下使用其中一种标准日志记录框架?我主要对看到每个查询结果,收到多少数据以及花费多长时间以及任何错误代码感兴趣。为MongoDB Java驱动程序配置日志记录

回答

22

您需要设置几个系统属性的之前加载任何MongoDB的Java驱动程序类:

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

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

这样做,驱动程序将使用the standard Java logging framework登录信息后。

不幸的是,据我可以从Java驱动程序代码中得知,日志粒度并不是很好 - 例如,您不能有选择地记录特定集合上的操作。

+2

想知道是否有人曾试图让Scala中这方面的工作,通过卡斯巴访问Java驱动程序,与SLF4J记录API?当不使用JUL时,似乎无法将消息记录到我的日志记录框架中。 – Brett 2013-07-18 10:52:43

+1

即时通讯使用mongodb弹簧数据,但这不起作用,我没有得到任何日志记录... – user1955934 2016-03-23 09:10:22

15

另一种方法设置MongoDB的日志级别:

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

您没有使用任何驱动程序类的前做到这一点,你可以在任何时间设置/更改日志级别。

+2

这将更好与记录器的包名称。是JUL吗? SLF4J? – bmargulies 2013-03-07 16:10:36

+3

试过,但不适合我。这是否需要在mongo初始化之后调用? – 2013-05-23 06:03:35

+0

纠正我自己,我可以设置级别,但无法设置过滤器。 – 2013-05-23 06:10:13

16

任何人仍然面临这个问题与新版本的mongodb驱动程序3.x?

log4j.properties

log4j.logger.org.mongodb.driver=INFO 

com.mongodb已经改变为org.mongodb定义蒙戈驱动程序包的记录器。

+0

我在我的log4j.properties中添加了这个,当我执行查询时没有任何反应..我没有看到任何日志,除了我添加的自定义日志消息。 – user1955934 2016-03-23 13:14:15

5

行之后对我的作品,

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.