有没有办法让 Play framework 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 framework 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 的文件)。看到这里更多。
您是否在 application.conf 文件中尝试过此操作?
# Debug SQL statements (logged using DEBUG level):
jpa.debugSQL=true
不确定它是否会为您提供所需的日志,但值得一试。
在讨论中,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 的方法。