【问题标题】:Unable to locate c3p0 logging messages无法找到 c3p0 日志记录消息
【发布时间】:2011-08-03 15:13:46
【问题描述】:

直到最近,我们为每个查询创建了一个新的数据库连接。每个查询都是使用 connection.prepareStatement(query) 设置的,我们可以使用 prepareStatement.toString() 将这些查询记录到我们的记录器 (java.util.logging) 中。这是使用 postgresql JDBC 驱动程序。

现在我们已经切换到使用 c3p0 来管理连接池,不幸的是preparedStatement.toString() 不再返回准备好的查询语句。

我有read 可以将 c3p0 日志记录定向到标准日志记录工具,但不幸的是我无法找到这些消息的去向。我在哪里可以找到这些消息? Glassfish 3 在 NetBeans 中的控制台表明已启用调试。

信息:初始化 c3p0-0.9.1.2 [建于 2007 年 5 月 21 日 15:04:56;调试?真的;追踪:10]

【问题讨论】:

  • 好的,澄清一下这个问题 - Mark 正在寻找这些日志的去向,这非常简单。但他假设 c3p0 正在记录实际的查询字符串,但实际上可能并非如此。这是我感兴趣的部分(也是赏金的重点):是否可以从 c3p0 自己记录实际查询?

标签: java logging c3p0 java.util.logging


【解决方案1】:

我不确定,如果 c3p0 的日志记录是您真正想要的?

我建议使用log4jdbc,它可以记录任何 JDBC 查询(带参数),甚至为您提供指向 JDBC/Hibernate/... 语句的堆栈跟踪,即使您使用的是连接池(使用选项-Dlog4jdbc.debug.stack.prefix=com.mycompany.myapp)。它还可以显示计时信息等等。

【讨论】:

  • 克里斯:很好,我搜索了一个这样的库,我在你的评论中找到了。谢谢!
  • @Chris Lercher - 谢谢,这是我一直在寻找的解决方案。除了一般的启动/关闭项目,c3p0 似乎只记录这样无用的东西:com.mchange.v2.c3p0.impl.NewProxyPreparedStatement@481e5f
【解决方案2】:

日志记录似乎像日志所说的那样 (debug?true),但如果您阅读帖子中链接上的 box,您会发现应该检查以找到正确文件的设置选项.

如果你最终登录到所谓的最后手段选项,它应该登录到System.Err,这可能会导致问题:this post 告诉 System.Err 默认情况下并不总是在 any 日志文件!

所以继续尝试前面提到的框上的其他选项,或者使用我链接的帖子的答案部分的修复:)

【讨论】:

  • 如果您想添加到您的答案中,请查看我的评论
  • @Mark :您是否有通过 c3p0 获取任何日志的问题,或者只是在 toString() 方法之后没有看到它?如果是第一种情况,请阅读我的回答,否则我无能为力,对不起。
  • @mico:感谢您的反馈。我找到了 c3p0 生成的日志,并且能够调整配置设置。但是,我假设 c3p0 会记录它正在运行的实际查询。据我所知,即使将日志级别设置为 ALL,也并非如此。
猜你喜欢
  • 1970-01-01
  • 2012-08-02
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 2012-02-08
相关资源
最近更新 更多