c3p0日志记录无效

时间:2013-11-20 16:12:00

标签: java spring hibernate c3p0

我没有收到c3p0日志记录,我的 log4j.properties 文件如下:

log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.hql=debug
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug

log4j.appender.hb=org.apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.apache.log4j.PatternLayout
log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n
log4j.appender.hb.Threshold=TRACE

log4j.appender.c3p0=org.apache.log4j.DailyRollingFileAppender
log4j.appender.c3p0.File=/var/log/fni/c3p0.log
log4j.appender.c3p0.layout=org.apache.log4j.PatternLayout
log4j.appender.c3p0.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.c3p0.DatePattern='.'yyyy-MM-dd

# c3p0 logger
log4j.category.com.mchange.v2.log.MLog=info, c3p0
log4j.category.com.mchange.v2.c3p0=info, c3p0
log4j.category.com.mchange.v2.resourcepool=debug, c3p0

以下是我的Spring Config的一部分

<bean
    id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

    <property name="configLocation">    
        <value>
            classpath:hibernate.cfg.xml
        </value>
    </property>

    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.c3p0.min_size">3</prop>
                <prop key="hibernate.c3p0.max_size">20</prop>
                <prop key="hibernate.c3p0.timeout">300</prop>
                <prop key="hibernate.c3p0.max_statements">50</prop>
                <prop key="hibernate.c3p0.idle_test_period">3000</prop> 
            </props>
     </property>
</bean>    

<bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
    <property name="jdbcUrl" value="jdbc:sqlserver://localhost:1433;DatabaseName=sample" />
    <property name="user" value="sa" />
    <property name="password" value="sa@123" />

</bean>

但是我得到了hibernate日志,我还添加了c3p0 jar文件,我缺少什么?如何知道我的c3p0连接池是否正常工作?

3 个答案:

答案 0 :(得分:5)

同意M Deinum,在我对c3p0的log4j测试中,我使用的是logger,而不是类别。即。

log4j.logger.com.mchange.v2.c3p0=INFO,c3p0
log4j.logger.com.mchange.v2.resourcepool=DEBUG,c3p0

另外,如果由于某种原因它会记录到它找到的其他日志记录库,你可以强制c3p0登录到log4j。在c3p0.properties文件中或作为VM的系统属性,添加

com.mchange.v2.log.MLog=com.mchange.v2.log.log4j.Log4jMLog
祝你好运!

答案 1 :(得分:1)

您不应该使用log4j.logger而不是log4j.category,旁边我强烈建议您使用log属性文件,该文件(IMHO)比属性文件更具可读性。我将从基础com.mchange开始,而不是所有单独的记录器/类别,并将其设置为DEBUG或TRACE。

当你注入数据源时,你的hibernate.c3p0属性不会做任何事情。

how do I turn off logging in java c3p0 connection pooling lib?有一些相关信息。

答案 2 :(得分:0)

我犯了一个愚蠢的错误,它已经工作但我正在使用DailyRollingFileAppender并尝试查找登录控制台,因此我将其替换为ConsoleAppender并且它可以正常工作。