BoneCP不记录SQL语句

问题描述:

我正在使用嵌入式Jetty 8 Serverjetty-maven-plugin。我无法获得BoneCP来记录执行的语句。我做错了什么?有没有解决方法?BoneCP不记录SQL语句

这是我BoneCPDataSource:

<New id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource"> 
    <Arg></Arg> 
    <Arg>jdbc/DSTest</Arg> 
    <Arg> 
     <New class="com.jolbox.bonecp.BoneCPDataSource"> 
      <Set name="driverClass">com.mysql.jdbc.Driver</Set> 
      <Set name="jdbcUrl">my_url</Set> 
      <Set name="username">my_username</Set> 
      <Set name="password">my_password</Set> 
      <Set name="partitionCount">5</Set> 
      <Set name="minConnectionsPerPartition">5</Set> 
      <Set name="maxConnectionsPerPartition">50</Set> 
      <Set name="acquireIncrement">5</Set> 
      <Set name="idleConnectionTestPeriod">30</Set> 
      <Set name="logStatementsEnabled">true</Set> 
     </New> 
    </Arg> 
</New> 

这是由servlet通过servlet上下文加载我的log4j的属性文件:

log4j.rootLogger=debug, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n 

感谢

+0

哦,好吧,至少我得到了这个问题徽章... – Gevorg

只是看到com.jolbox.bonecp的代码:

package com.jolbox.bonecp; 

public class PreparedStatementHandle extends StatementHandle implements 
    PreparedStatement { 
    // @Override 
    public boolean execute() throws SQLException { 
     checkClosed(); 
     try { 
      if (this.logStatementsEnabled && logger.isDebugEnabled()){ 
       logger.debug(PoolUtil.fillLogParams(this.sql, this.logParams)); 
      } 
     ... 
    } 
} 

因此,除了为bonecp添加logStatementsEnabled设置外,还必须在log4j.properties中将bonecp的日志级别打开为DEBUG或ALL。这里是一个例子:

log4j.logger.com.jolbox.bonecp=DEBUG 

Details about log4j Level.

+0

刚刚更新的javadoc和启动过程中增加了一个检查,以提醒这一点。 (BoneCP作者) – wwadge

+0

赞赏。 – Wuaner