2012-03-03 10 views
27

MongoDB Javaドライバを設定して、理想的には標準のロギングフレームワークの1つを使用して、有用な(デバッグ用の)メッセージを出力することはできますか?私は主に、外出する各クエリ、受信したデータの量、そしてどれぐらいの時間がかかったか、エラーコードを確認することに興味があります。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ドライバコードからわかるように、ロギングの細分性はすべてではありません。たとえば、特定のコレクションに対して操作を選択的にログすることはできません。 MongoDBののログレベルを設定し実行する

+2

が疑問に思う、私の作品? JULを使用しない場合、ログフレームワークにメッセージを記録できないようです。 – Brett

+1

私はmongodb-springデータを使用していますが、これはうまくいきません。ログを取得していません... – user1955934

15

別の方法:

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

あなたは、ドライバクラスのいずれかを使用する前に、これを行う必要はありません、あなたはいつでも/変更ログレベルを設定することができます。

+2

これは、loggerのパッケージ名では良いでしょう。それはJULですか? SLF4j? – bmargulies

+3

それを試しましたが、私にとってはうまくいかない。これは、mongoが初期化された後、または何かが呼び出される必要がありますか? –

+0

自分自身を修正すると、レベルを設定できますが、フィルタを設定できません。 –

16

新しいバージョンのmongodbドライバ3.xでは誰でもこの問題に直面していますか?

log4j.properties

log4j.logger.org.mongodb.driver=INFO 

にcom.mongodborg.mongodbに変化したMongoのドライバパッケージのロガーを定義します。ライン後

+0

私はこれをlog4j.propertiesに追加しましたが、クエリを実行すると何も起こりません。追加したカスタムログメッセージ以外のログは表示されません。 – user1955934

5

は、誰もがSLF4JロギングAPIで、カスバを経由してJavaドライバへのアクセス、Scalaでこの作業を取得しようとした場合

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. 
関連する問題