首页 > 解决方案 > 在 Java 中使用 Log4j 显示休眠统计信息和 sql

问题描述

我正在使用带有 Hibernate 的 Java Spring 并使用 Log4j 进行日志记录。我无法记录任何休眠日志

这是我的 log4j.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" 
    "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="default.console" class="org.apache.log4j.ConsoleAppender">
        <param name="target" value="System.out" />
        <param name="threshold" value="info" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ISO8601} %-5p [%c{1}] - %m%n" />
        </layout>
    </appender>

    <appender name="default.file" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="/hp_exstream/DM_HOME/command-center-2.4.0/var/workspace/Flj-Contrato-Digital-01-TSE-Batch/logs/tse-batch.log" />
        <param name="datePattern" value="'_'dd-MM-yyyy'.log'" />
        <param name="append" value="true" />
        <param name="threshold" value="info" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ISO8601} %-5p [%c{1}] - %m%n" />
        </layout>
    </appender>

    <root>
        <priority value="info" />
        <appender-ref ref="default.console" />
        <appender-ref ref="default.file" />
    </root>

</log4j:configuration>

我已经设置了这个 Hibernate 配置

       <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
                <prop key="hibernate.default_schema">${hibernate.schema}</prop>
                <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
                <prop key="hibernate.generate_statistics">true</prop>
                <prop key="show_sql">true</prop>
            </props>
        </property>

我的结果只有这些以及我的应用程序中的所有 INFO 日志:

2019-06-07 16:10:26,810 INFO  [Version] - HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
2019-06-07 16:10:26,817 INFO  [Version] - HHH000412: Hibernate Core {4.1.12.Final}
2019-06-07 16:10:26,819 INFO  [Environment] - HHH000206: hibernate.properties not found
2019-06-07 16:10:26,821 INFO  [Environment] - HHH000021: Bytecode provider name : javassist
2019-06-07 16:10:31,983 INFO  [Dialect] - HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
2019-06-07 16:10:31,994 INFO  [LobCreatorBuilder] - HHH000422: Disabling contextual LOB creation as connection was null
2019-06-07 16:10:32,008 INFO  [TransactionFactoryInitiator] - HHH000399: Using default transaction strategy (direct JDBC transactions)
2019-06-07 16:10:32,013 INFO  [ASTQueryTranslatorFactory] - HHH000397: Using ASTQueryTranslatorFactory
2019-06-07 16:10:32,575 INFO  [SaajSoapMessageFactory] - Creating SAAJ 1.3 MessageFactory with SOAP 1.1 Protocol
2019-06-07 16:10:32,719 INFO  [Jaxb2Marshaller] - Creating JAXBContext with context path [com.soapros.tse.domain.ews]

但它没有显示任何关于统计信息和 sql 的信息

标签: javahibernateormlog4j

解决方案


尝试

<Logger name="org.hibernate.SQL" level="debug"/>
<Logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="trace"/>

对于 SQL 语句


推荐阅读