我想使用log4j將生成的SQL查詢導出到控制檯。使用Spring 4和Hibernate 4。春季+休眠show_sql不能正常工作
該servlet-context.xml中:
<beans:bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<beans:property name="dataSource" ref="dataSource" />
<beans:property name="configLocation" value="classpath:hibernate.cfg.xml" />
<beans:property name="hibernateProperties">
<beans:props>
<beans:prop key="hibernate.show_sql">true</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="show_sql">true</property>
<property name="connection.autocommit">false</property>
</session-factory>
當我調用下面的方法,在控制檯中不產生信息來源的hibernate.cfg.xml中:
List<Comment> listComment = (List<Comment>) sessionFactory.getCurrentSession()
.createCriteria(Comment.class).list();
有何建議?
==============================%=============== =================
我認爲問題出在log4j.xml文件中。順便說一下,我正在使用STS的Spring MVC項目。 Spring 4.3.2 + Hibernate 4.2.5 + Tomcat 8.0 + log4j 1.2.15。
的log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="com.hersbitcloud.cancercloud">
<level value="info" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<logger name="org.hibernate">
<level value="info" />
</logger>
<logger name="org.hibernage.SQL">
<level value="debug" />
</logger>
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>
由Hibernate生成的日誌是:
INFO : org.hibernate.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {4.0.4.Final}
INFO : org.hibernate.Version - HHH000412: Hibernate Core {4.3.5.Final}
INFO : org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
INFO : org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist
INFO : org.hibernate.cfg.Configuration - HHH000044: Configuring from URL: file:/E:/OneDrive/PostDoc/SuperDr/Code/Spring/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/CancerCloud/WEB-INF/classes/hibernate.cfg.xml
INFO : org.hibernate.cfg.Configuration - HHH000041: Configured SessionFactory: null
INFO : org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
INFO : org.hibernate.engine.transaction.internal.TransactionFactoryInitiator - HHH000399: Using default transaction strategy (direct JDBC transactions)
INFO : org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory - HHH000397: Using ASTQueryTranslatorFactory
INFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'appServlet': initialization completed in 2663 ms
即使「sessionFactory.getCurrentSession ().createCriteria'不會生成任何SQL語句。
有什麼我應該添加到log4j.xml?
你使用任何Log4j配置文件..喜歡一個XML文件,您可以指定_category_和_level_ loggining的? –
@VirajNalawade我沒有使用任何'log4j.properties'文件。我很確定log4j正在工作,因爲我可以使用'logger.info(「Welcome」);'。 –
根據我的知識那裏*必須是*一些log4j.properties或一些配置文件..或者你怎麼知道哪些文件重定向什麼消息顯示在哪個日誌文件..? –