如何禁用日志记录hibernate"表未找到"信息

时间:2015-10-26 21:22:55

标签: java hibernate logging

如何禁用Hibernate的日志输出:

HHH000262: Table not found: ...

我有以下log4j.properties:

log4j.rootLogger=WARN, stdout, stderr
log4j.logger.org.apache=WARN
log4j.logger.org.springframework=WARN

log4j.logger.org.hibernate=ERROR

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold = TRACE
log4j.appender.stdout.Target   = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %m%n
log4j.appender.stdout.filter.filter1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.stdout.filter.filter1.levelMin=TRACE
log4j.appender.stdout.filter.filter1.levelMax=INFO

# configure stderr for ERROR and WARN
log4j.appender.stderr = org.apache.log4j.ConsoleAppender
log4j.appender.stderr.Threshold = WARN
log4j.appender.stderr.Target   = System.err
log4j.appender.stderr.layout = org.apache.log4j.PatternLayout
log4j.appender.stderr.layout.ConversionPattern = %p: %m%n

log4j.logger.org.hibernate = ERROR确实消除了其他Hibernate INFO消息,例如打开数据库等。 "表未找到"消息记录为INFO(我在hibernate的源代码中确认)。

我不希望看到"表未找到"消息,因为我正在使用"更新"模式自动创建和更新表。

我错过了什么?

2 个答案:

答案 0 :(得分:0)

在Log4j中,您可以为由字符串标识的指定包,类或记录器指定日志记录级别。你只需在log4j.properties文件中写这个:

log4j.logger.<your package> = DEBUG|INFO|OFF|WARN...

答案 1 :(得分:0)

org.hibernate.tool.hbm2ddl.DatabaseMetadata LOG静态常量中似乎有一个错误。它的构造就像这样……

private static final CoreMessageLogger LOG = Logger.getMessageLogger(CoreMessageLogger.class, DatabaseMetaData.class.getName());

一个细微的错误是,传递给category参数的值是DatabaseMetaData类(请注意MetaData中的大写D),它来自包java.sql。因此,您必须使用...指定日志记录级别。

log4j.logger.java.sql.DatabaseMetaData=WARN