Play フレームワーク 1.2.5 で表示される c3p0 デバッグ ログを取得する方法はありますか?
誰かがPlay メーリング リストでこれを尋ねました。少なくとも log4j.properties に以下を追加しても機能しません:
log4j.logger.com.mchange.v2.c3p0=DEBUG
log4j.category.com.mchange=DEBUG
log4j.logger.com.mchange=DEBUG
Play フレームワーク 1.2.5 で表示される c3p0 デバッグ ログを取得する方法はありますか?
誰かがPlay メーリング リストでこれを尋ねました。少なくとも log4j.properties に以下を追加しても機能しません:
log4j.logger.com.mchange.v2.c3p0=DEBUG
log4j.category.com.mchange=DEBUG
log4j.logger.com.mchange=DEBUG
一部の Play ソース コードを読み取ると、DBPlugin:onApplicationStartには次のように見えます。
...
System.setProperty("com.mchange.v2.log.MLog", "com.mchange.v2.log.FallbackMLog");
System.setProperty("com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL", "OFF");
ComboPooledDataSource ds = new ComboPooledDataSource();
...
これらの System.setProperty 行をコメントアウトしてローカル jar を作成すると、c3p0 のログを確認できました。
これ以外にロギングを有効にする方法があるかどうかわかりませんか?
c3p0 のログ情報がどこかに表示されますか? 標準出力経由ですか、それとも java.util.logging 経由ですか?
とにかく試してほしいのは、
com.mchange.v2.log.MLog=com.mchange.v2.log.log4j.Log4jMLog
これを c3p0.properties ファイルに入れるか、システム プロパティとして設定する (または mchange-log.properties というファイルを作成する) ことができます。詳しくはこちらをご覧ください。
議論の中で、avfl と Scott は、OnApplicationStart ジョブで別の方法を見つけました。
package jobs;
import play.jobs.*;
import play.Logger;
@OnApplicationStart
public class C3p0Logging extends Job {
public void doJob() {
Logger.info("Setting custom c3p0 log level");
com.mchange.v2.log.log4j.Log4jMLog.getLogger().setLevel(com.mchange.v2.log.MLevel.FINEST);
}
}
これは c3p0 FallbackMLog -> System.err に終わるようです。このアプローチでログを log4j に取得する方法が見つかりませんでした。
application.conf ファイルでこれを試しましたか?
# Debug SQL statements (logged using DEBUG level):
jpa.debugSQL=true
必要なログが得られるかどうかはわかりませんが、試してみる価値があります。