【发布时间】:2015-07-30 09:18:52
【问题描述】:
我是春季的新手,所以这可能只是我在寻找,但我已经尝试了几个小时无济于事。我已经集成了 spring 和 hibernate 并且正在工作,但是我想将查询记录到一个文件中,以便我可以检查它们。我正在使用 log4j 进行日志记录,但问题是我无法休眠以写入文件,并希望得到一些澄清。
这是 applicationContext 中的 sessionFactory bean
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<property name="packagesToScan" value="com.example"/>
</bean>
Log4j 配置
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${catalina.home}/logs/my-log-file.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="20MB" />
<param name="MaxBackupIndex" value="2" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{DATE} %c | %msg %n" />
</layout>
</appender>
<appender name="hibernate-rolling" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${catalina.home}/logs/hib-example-file.log" />
<param name="Append" value="true" />
<param name="ImmediateFlush" value="true" />
<param name="MaxFileSize" value="20MB" />
<param name="MaxBackupIndex" value="2" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{DATE} %c | %msg %n"/>
</layout>
</appender>
<logger name="org.hibernate.SQL" additivity="false">
<level value="debug" />
<appender-ref ref="hibernate-rolling" />
</logger>
<root>
<priority value="INFO"></priority>
<appender-ref ref="FILE" />
</root>
</log4j:configuration>
非常感谢任何帮助?
编辑:
我已经尝试了link 中提供的记录器,但这并没有导致将查询写入文件。
【问题讨论】:
-
将您的级别更改为 ALL 而不是调试。
-
我也尝试添加所有这些记录器并更改了级别,但仍然没有更改。如果我将记录器更改为 org.hibernate 并将调试级别写入日志文件,但它有 2000 多行,其中没有一条是用于检索我需要的对象的查询。
-
org.hibernate.SQL 可以在我将级别设置为 ALL 时显示所有查询。愚蠢的问题,但是您是否正在为您的输出查看正确的文件(hib-example-file.log),并且您在更改配置后是否重新启动了应用程序?
-
是的,我是。奇怪的是,当我在 Java Swing 应用程序中设置 log4j 和休眠时,我没有遇到任何问题。我基本上将 log4j.xml 复制到了 spring 项目并更改了文件位置,但我没有得到任何可以打印到日志文件的内容。
-
我是个彻头彻尾的白痴,刚刚发布了我的问题,它与记录器无关。我忘记将表的 jpa 注释添加到模型中,因此从未调用过查询。奇怪的是没有抛出异常。我认为这样的事情会导致异常。感谢您的帮助,很抱歉浪费您的时间。