如何在控制台中禁用休眠日志记录?

时间:2018-12-26 21:16:50

标签: spring hibernate

我正在尝试在控制台中禁用休眠日志,我尝试了以下操作。 以下代码属于我的app-config.xml:-

<bean id="sessionFactory" name="sourceFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="myprojds"/>
    <property name="packagesToScan" value="com.myproj" />
    <property name="hibernateProperties">
        <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
                <prop key="hibernate.cglib.use_reflection_optimizer">false</prop>
                <prop key="hibernate.jdbc.batch_size">50</prop>
                <prop key="hibernate.default_batch_fetch_size">50</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.use_sql_comments">false</prop>
                <prop key="hibernate.generate_statistics">false</prop>
                <prop key="hibernate.format_sql">false</prop>
                <prop key="hibernate.hbm2ddl.auto">false</prop>
                <prop key="hibernate.enable_lazy_load_no_trans">true</prop>
            </props>
    </property>
</bean> 

以下代码属于log4j.xml:-

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

<appender name="appender1" class="org.apache.log4j.RollingFileAppender">
    <param name="file" value="/opt/info_${current.date}.log"/>
    <param name="append" value="false"/>
    <param name="maxFileSize" value="2MB"/>
    <param name="maxBackupIndex" value="200"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %5p (%F:%M:%L) - %m%n" />
    </layout>
</appender>
<root>
    <priority value ="error" />
    <appender-ref ref="appender1"/>
</root>
<logger name="org.hibernate"  additivity="false">
    <appender-ref ref="appender1"/> 
    <level value="error" /> 
</logger>

 </log4j:configuration> 

我仍然不确定为什么我会在控制台中看到休眠日志。请帮助

2 个答案:

答案 0 :(得分:1)

在较新的休眠版本中,通过使用JBoss Logging作为许多记录器实现之间的桥梁来完成记录。 thread讨论了如何在休眠4中设置slf4j,但问题非常相似。您可能必须调试class才能检查休眠状态如何选择其日志记录提供程序。也许您遇到了类路径问题(休眠未在类路径中找到log4j)。 您有可能必须设置一些系统属性或创建服务加载程序文件(第一个链接对此有一些提示),以便休眠状态正确选择日志记录提供程序。

答案 1 :(得分:0)

这是RollingFileAppender的配置(登录到/opt/info_${current.date}.log上的文件,而不是控制台上的文件)。查看配置中是否有ConsoleAppender。如果没有ConsoleAppender,则您可能会在代码本身中看到来自system.out的控制台日志。