我使用的是 Java 8、Hibernate 4.3.11 和 c3p0 9.2.1。
我在 hibernate 配置类中定义了所有 c3p0 属性
例如
Configuration config = new org.hibernate.cfg.Configuration();
config.setProperty("hibernate.c3p0.maxStatementsPerConnection","50");
这非常有效,因为这意味着在不同平台(Mac、Windows、Linux、Docker 等)上一切都一样
但是我无法获得任何 c3p0 调试输出,我通过添加取得了一些成功
-Dcom.mchange.v2.log.MLog=com.mchange.v2.log.jdk14logging.Jdk14MLog
但是使用
config.setProperty("hibernate.c3p0.com.mchange.v2.log.MLog","com.mchange.v2.log.jdk14logging.Jdk14MLog");
相反没有任何效果。
这是否可能,因为添加为系统属性需要修改才能为所有平台构建脚本(我们提供了正确的安装程序而不仅仅是 jar 文件)。
最佳答案
尝试调用 com.mchange.v2.log.MLog.refreshConfig(null, null)设置配置属性后。
命令行设置与运行时设置的一个问题是类加载通常会触发属性的读取。这意味着在运行时该值会在代码设置之前被读取。
关于java - 如何在我的 hibernate 类中启用 c3p0 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57624302/