2015-12-09 3 views
0

Я пытаюсь экспортировать сгенерированный SQL-запрос в консоль с помощью log4j. Используются пружина 4 и Hibernate 4.Spring + Hibernate show_sql не работает

Сервлет-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.cfg.xml

<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> 

Когда я вызвать следующий метод, нет детали не генерируется в консоли:

List<Comment> listComment = (List<Comment>) sessionFactory.getCurrentSession() 
      .createCriteria(Comment.class).list(); 

Любые предложения?

============================================================================================================================================================== =================

Я думаю, проблема в файле log4j.xml. Кстати, я использую проект Spring SVC от STS. 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?

+2

Вы используете любой файл конфигурации Log4j .. как с файлом XML, где вы указываете _category_ и _level_ из loggining ?? –

+0

@VirajNalawade Я не использую файл 'log4j.properties'. Я уверен, что log4j работает, потому что я могу использовать 'logger.info («Добро пожаловать»);'. –

+1

в соответствии с моими знаниями там * должен быть * некоторые log4j.properties или некоторый файл конфигурации .. или как вы определяете, какие файлы перенаправлять какие сообщения должны отображаться в каком файле журнала .. ?? –

ответ

0

У меня есть все, чтобы работать, изменяя

<logger name="org.hibernate"> 
    <level value="info" /> 
</logger> 

в

<logger name="org.hibernate"> 
    <level value="all" /> 
</logger> 
+1

У вас есть опечатка в вашей конфигурации: 'org.hibernage.SQL', а не' org.hibernate.SQL'. Это должно быть установлено на уровне 'debug'. Не нужно устанавливать уровень org.hibernate на 'all', поскольку это будет довольно спам. – Will

-1

Upto моего знания, это может быть конфигурация,

<session-factory> 

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 

    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 

    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/db</property> 

    <property name="hibernate.connection.username">root</property> 

    <property name="hibernate.connection.password">root</property> 

    <property name="hibernate.show_sql">true</property> 
Смежные вопросы