如何禁用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的源代码中确认)。
我不希望看到"表未找到"消息,因为我正在使用"更新"模式自动创建和更新表。
我错过了什么?
答案 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