Java c3p0 日志记录不起作用

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/20101036/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-12 23:09:55  来源:igfitidea点击:

c3p0 logging is not working

javaspringhibernatec3p0

提问by commit

I am not getting c3p0 logging, my log4j.propertiesfile is as below:

我没有得到 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

Below is part of my Spring Config

下面是我的 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>

However I am getting hibernate log and I have also c3p0 jar file added, what I am missing? How to know my c3p0 connection pooling is working or not?

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

回答by M. Deinum

Shouldn't you be using log4j.loggerinstead of log4j.category, next to that I would strongly recommend using a log4j.xml file which is (IMHO) more readable then the properties file. Instead of all the separate loggers/categories I would start with the base one com.mchangeand set it to DEBUG or TRACE.

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

Another thing your hibernate.c3p0properties don't do a thing as you are injecting a datasource.

hibernate.c3p0当您注入数据源时,您的属性没有做的另一件事。

how do I turn off logging in java c3p0 connection pooling lib?has some related information.

如何关闭 java c3p0 连接池库的登录?有一些相关信息。

回答by Steve Waldman

agreeing with M Deinum, in my log4j tests of c3p0, i've used logger, not category. i.e.

同意 M Deinum,在我对 c3p0 的 log4j 测试中,我使用了记录器,而不是类别。IE

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

also, you can force c3p0 to log to log4j if for some reason it is logging to some other logging library it has found. in a c3p0.properties file or as a System property to your VM, add

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

com.mchange.v2.log.MLog=com.mchange.v2.log.log4j.Log4jMLog

good luck!

祝你好运!

回答by commit

I had made silly mistake, It was already working but I was using DailyRollingFileAppenderand trying to find log in console, so I replace it with ConsoleAppenderand it works.

我犯了一个愚蠢的错误,它已经在工作了,但我正在使用DailyRollingFileAppender并试图在控制台中找到登录,所以我用它替换它ConsoleAppender并且它工作正常。