BoneCP不记录SQL语句
问题描述:
我正在使用嵌入式Jetty 8 Server
和jetty-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
感谢
答
只是看到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
哦,好吧,至少我得到了这个问题徽章... – Gevorg