2012-09-18 113 views
3

我正在使用嵌入式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

回答

4

只是看到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