2012-03-03 30 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.