问题
I am not getting c3p0 logging, my log4j.properties file is as below:
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
<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?
回答1:
agreeing with M Deinum, in my log4j tests of c3p0, i've used logger, not category. i.e.
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
com.mchange.v2.log.MLog=com.mchange.v2.log.log4j.Log4jMLog
good luck!
回答2:
Shouldn't you be using log4j.logger
instead 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.mchange
and set it to DEBUG or TRACE.
Another thing your hibernate.c3p0
properties don't do a thing as you are injecting a datasource.
how do I turn off logging in java c3p0 connection pooling lib? has some related information.
回答3:
I had made silly mistake, It was already working but I was using DailyRollingFileAppender
and trying to find log in console, so I replace it with ConsoleAppender
and it works.
来源:https://stackoverflow.com/questions/20101036/c3p0-logging-is-not-working