【问题标题】:How to disable Hibernate logs in Eclipse?如何在 Eclipse 中禁用 Hibernate 日志?
【发布时间】:2015-04-17 10:46:22
【问题描述】:

我是 hibernate 新手,我正在 Eclipse 中做项目。当我登录到我的应用程序时,它会在控制台中显示许多我不需要的日志消息,日志消息是这样的,

97 [http-bio-8080-exec-9] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
102 [http-bio-8080-exec-9] INFO org.hibernate.cfg.Environment - Hibernate 3.6.10.Final
103 [http-bio-8080-exec-9] INFO org.hibernate.cfg.Environment - hibernate.properties not found
105 [http-bio-8080-exec-9] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
108 [http-bio-8080-exec-9] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
165 [http-bio-8080-exec-9] INFO org.hibernate.cfg.Configuration - configuring from resource: /hibernate.cfg.xml
165 [http-bio-8080-exec-9] INFO org.hibernate.cfg.Configuration - Configuration resource: /hibernate.cfg.xml
220 [http-bio-8080-exec-9] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
262 [http-bio-8080-exec-9] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.aurodisplay.its.beans.UserRegisterBean
296 [http-bio-8080-exec-9] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.aurodisplay.its.beans.UserRegisterBean on table users
334 [http-bio-8080-exec-9] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.aurodisplay.its.beans.AdminInfoBean
334 [http-bio-8080-exec-9] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.aurodisplay.its.beans.AdminInfoBean on table admin_info
337 [http-bio-8080-exec-9] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.aurodisplay.its.beans.LatitudeBean
337 [http-bio-8080-exec-9] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.aurodisplay.its.beans.LatitudeBean on table latlng

我的 hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<session-factory>

    <!-- Database connection settings -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost:3306/its_serverdb</property>
    <property name="connection.username">root</property>
    <property name="connection.password">root</property>

    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">10</property>

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

    <!-- Disable the second-level cache  -->
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

    <!-- Echo all executed SQL to stdout -->
    <property name="show_sql">true</property>

    <property name="hibernate.connection.zeroDateTimeBehavior">convertToNull</property>
  <property name="hibernate.connection.release_mode">on_close</property>
     // next are mappings

我已经集成了 Log4j,这是我的 Log4j.xml 文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%d{dd-MM-yyyy HH:mm:ss}] [%c{1}] %-5p :%L - %m%n" />
    </layout>
</appender>

<appender name="file" class="org.apache.log4j.RollingFileAppender">
    <param name="append" value="false" />
    <param name="maxFileSize" value="10MB" />
    <param name="maxBackupIndex" value="10" />
    <param name="file" value="${catalina.home}/logs/ITS_Server.log" />
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%d{dd-MM-yyyy HH:mm:ss}] [%c{1}] %-5p:%L - %m%n" />
    </layout>
</appender>

<category name="org.hibernate">
    <priority value="DEBUG" />
</category>

<category name="java.sql">
    <priority value="debug" />
</category>

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

<root>
    <level value="DEBUG" />
    <appender-ref ref="console" />
    <appender-ref ref="file" />


  </root>

 </log4j:configuration>

如何禁用它。当我在谷歌上搜索它时,许多解决方案都在使用Log4j 我不知道它是什么以及它的用途。如果可能的话,我可以在没有Log4j 的情况下禁用日志吗?请告诉我如何。这将是很大的帮助。谢谢。

【问题讨论】:

    标签: java hibernate model-view-controller


    【解决方案1】:

    设置

    <property name="show_sql">false</property>
    

    创建会话时使用

    Logger log = Logger.getLogger("org.hibernate");
        log.setLevel(Level.your_level); 
    

    这应该会停止记录,您不必使用任何xmlcfg 文件

    【讨论】:

    • 我收到错误ERROR cannot be resolved or is not a field
    • 抱歉@Raghu,我忘记了它是致命的确切级别
    • 当创建会话时意味着SessionFactory sFactory=HibernateUtil.getSessionFactory();在此行之前?
    • 不,它不起作用,我确实喜欢这个。 Logger log = Logger.getLogger("org.hibernate"); log.setLevel(Level.OFF); SessionFactory sFactory=HibernateUtil.getSessionFactory(); //Session session= HibernateSession.getHibernateSession(); Session session= sFactory.openSession(); FATAL 级别不存在
    • 请尝试一下:org.hibernate.SQL 而不是 org.hibernate
    【解决方案2】:

    尝试 log4j.xml 中的以下行。

    <Root> 
    <Level value = "INFO" /> 
    <Appender-ref ref = "console" /> 
    <Appender-ref ref = "rootLogger" /> 
    </Root>
    

    我在 log4j.properties 中使用了对我有用的以下行。

    log4j.rootLogger=DEBUG, file, console
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=../logs/Log_report.log
    log4j.appender.file.MaxFileSize=1MB
    log4j.appender.file.MaxBackupIndex=1
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    

    【讨论】:

    • 你能来在线聊天吗。我想讨论一下这个。
    • 我不需要为休眠日志定义任何类别
    • 请看我更新的问题,我已经添加了我的 Log4j.xml 文件。请告诉我我必须做出哪些改变。
    • 没有定义任何日志并且休眠日志没有存储在日志中。
    • 我想将所有 Hibernate 日志存储在单独的文件中,我必须在上面的 xml 中做些什么。
    【解决方案3】:

    尝试设置

    log4j.logger.org.hibernate=info

    更多信息Turning off hibernate logging console output

    【讨论】:

    • 不能没有log4j,否则请告诉我如何为此配置log4j
    【解决方案4】:

    由于您没有任何记录器,请尝试将其添加到您的 hibernate.cfg.xml 文件中

    <!-- Limit the org.hibernate category to INFO since logging to DEBUG affects performance badly -->  
    <category name="org.hibernate">  
        <priority value="WARN"/>  
    </category>  
    

    o 将日志信息写入文件,安装 Log4j 后,您必须使用 org.apache.log4j.FileAppender

    以下是 FileAppender 的示例配置文件 log4j.properties -

    # Define the root logger with appender file
    log4j.rootLogger = DEBUG, FILE
    
    # Define the file appender
    log4j.appender.FILE=org.apache.log4j.FileAppender
    
    # Set the name of the file
    log4j.appender.FILE.File=${log}/log.out
    
    # Set the immediate flush to true (default)
    log4j.appender.FILE.ImmediateFlush=true
    
    # Set the threshold to debug mode
    log4j.appender.FILE.Threshold=debug
    
    # Set the append to false, overwrite
    log4j.appender.FILE.Append=false
    
    # Define the layout for file appender
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.conversionPattern=%m%n
    

    查看herehere 了解更多信息。

    【讨论】:

    • 我没有使用Log4j(我没有任何与Log4j相关的外部jar)。那么它也可以工作。
    • 它给出错误org.hibernate.MappingException: invalid configuration和根本原因org.xml.sax.SAXParseException; lineNumber: 54; columnNumber: 34; Element type "category" must be declared.
    • 您好,我现在已经集成了Log4j,如何将所有的Hibernate登录记录到文件中。
    【解决方案5】:

    旧帖,但有用:

    首先,您可以使用 log4j 配置文件(将其添加到您的 pom.xml)

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    

    最后,要禁用日志记录,请放入 src/main/resources/log4j.properties 文件

    log4j.rootLogger=OFF
    

    【讨论】:

    • 您应该在 log4j.properties 的哪个位置添加它?
    猜你喜欢
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    相关资源
    最近更新 更多