当前位置:  开发笔记 > 编程语言 > 正文

关闭hibernate日志记录控制台输出

如何解决《关闭hibernate日志记录控制台输出》经验,为你挑选了5个好方法。

我正在使用hibernate 3并希望阻止它将所有启动消息转储到控制台.我试着在log4j.properties中注释出stdout行,但没有运气.我在下面粘贴了我的日志文件.此外,我正在使用标准项目结构的eclipse,并在项目文件夹的根目录和bin文件夹中都有一个log4j.properties的副本.

### direct log messages to stdout ###
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target=System.out
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file hibernate.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=hibernate.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=warn, stdout

#log4j.logger.org.hibernate=info
log4j.logger.org.hibernate=debug

### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug

### log just the SQL
#log4j.logger.org.hibernate.SQL=debug

### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug

### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug

### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug

### log cache activity ###
#log4j.logger.org.hibernate.cache=debug

### log transaction activity
#log4j.logger.org.hibernate.transaction=debug

### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug

### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trac5

user1050755.. 75

重要提示:属性(hibernate配置的一部分,不是日志框架配置的一部分!)

hibernate.show_sql

控制日志记录直接到STDOUT绕过任何日志框架(您可以通过消息的缺失输出格式识别).如果您使用log4j之类的日志记录框架,则应始终将该属性设置为false,因为它根本不会给您带来任何好处.

这种情况让我感到很长时间,因为在我试图编写一些关于Hibernate的基准测试之前,我从未真正关心它.



1> user1050755..:

重要提示:属性(hibernate配置的一部分,不是日志框架配置的一部分!)

hibernate.show_sql

控制日志记录直接到STDOUT绕过任何日志框架(您可以通过消息的缺失输出格式识别).如果您使用log4j之类的日志记录框架,则应始终将该属性设置为false,因为它根本不会给您带来任何好处.

这种情况让我感到很长时间,因为在我试图编写一些关于Hibernate的基准测试之前,我从未真正关心它.


我必须在我的Hibernate(即`hibernate.xml`)配置中设置此属性,而不是我的日志记录配置.谢谢你的指针!

2> Juha Syrjälä..:

尝试设置更合理的日志记录级别.将日志记录级别设置为info仅记录处于info或更高级别(warn,errorfatal)的debug日志事件,即忽略日志记录事件.

log4j.logger.org.hibernate=info

或者在log4j配置文件的XML版本中:


   

另请参见log4j手册.


后续,因为这从未得到充分解决:Hibernate,即使仍然在4.3.0.Final,有很多硬编码的`System.out.println()`调用.
这似乎是合乎逻辑的,但仍然不适合我(Spring 3.0.5,Hibernate 3.5.6,sf4j-log4j bridge).每次我仍然会在Hibernate启动时获得大约100行'INFO'评论.所以这可能对每个人都不起作用.

3> acdcjunior..:

执行:

java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.OFF);

在hibernate初始化之前为我工作.


注意:上面的行将关闭每个日志(Level.OFF).如果你想要不那么严格,你可以使用

java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);

这很安静.(或者查看java.util.logging.Level班级以获得更多关卡).



4> 小智..:

你可以禁用hibernate的许多输出设置这个hibernate(hb配置)的道具是假的:

hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments

但是,如果你想禁用所有的控制台的信息,您必须设置记录水平的FATAL类的NONE org.hibernate像尤哈说.



5> 小智..:

我终于想通了,这是因为Hibernate现在正在使用slf4j log facade,要桥接到log4j,你需要将log4j和slf4j-log4j12 jar放到你的lib中,然后log4j属性将控制Hibernate日志.

我的pom.xml设置如下所示:

    
        log4j
        log4j
        1.2.16
    

    
        org.slf4j
        slf4j-log4j12
        1.6.4
    

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有