我正在使用以下log4j2.xml配置。我把它保存在资源文件夹的根目录中。
我无法摆脱INFO stdout hibernate输出。 e.g。
06:17:01,835 INFO [stdout] (ServerService Thread Pool -- 52) insert into hibernate_sequence values ( 1 )
我的配置有什么问题和/或缺少什么?
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.mycode" level="trace" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<Logger name="org.hibernate" level="warn" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<Root level="warn">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
我将这些库附加到我的项目中。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0.2</version>
</dependency>
我正在使用这个API版本的JPA / Hibernate 4。
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<scope>provided</scope>
</dependency>
答案 0 :(得分:6)
我遇到了同样的问题,关闭日志级别对我有用:
<logger name="org.hibernate" level="OFF" additivity="false">
...
</logger>
答案 1 :(得分:2)
根据您的帖子,INFO消息包含Hibernate生成的查询。这是在hibernate.cfg.xml
配置文件中使用属性show_sql`配置的。您可以使用配置文件中的以下行禁用它。
<property name="show_sql">false</property>
答案 2 :(得分:0)
<强>执行:强>
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类以获取更多级别)。
还有财产
hibernate.show_sql
hibernate.generate_statistics
hibernate.use_sql_comments
直接控制日志记录到STDOUT
绕过任何日志记录框架(您可以通过缺少的消息输出格式识别)。如果您使用log4j之类的日志记录框架,则应始终将该属性设置为 false 。
但是如果要禁用所有控制台信息,则必须将记录器级别设置为类{org.hibernate NONE
的{{1}} ..
<强> FATAL
强>
启用将所有生成的SQL语句记录到控制台
show_sql
<强> <property name="show_sql">false</property>
强>
格式化生成的SQL语句以使其更具可读性,但占用更多屏幕空间。
format_sql
<强> <property name="format_sql">false</property>
强>
Hibernate会在所有生成的SQL语句中放置注释,以暗示生成的SQL尝试做什么
use_sql_comments
<强>合并强>:
<property name="use_sql_comments">false</property>
答案 3 :(得分:0)
在java.util.logging.Logger.getLogger("org.hibernate")
.setLevel(java.util.logging.Level.OFF)
课程中,只写:
AnnotationConfiguration
在创建log4j2.xml
对象之前。
使用log4j2 (log4j-api-2.2.jar and log4j-core-2.2.jar)
和private final SessionFactory sessionFactory;
{
java.util.logging.Logger.getLogger("org.hibernate")
.setLevel(java.util.logging.Level.OFF);
try
{
sessionFactory = new AnnotationConfiguration()
.configure("hibernate.cfg.xml").buildSessionFactory();
} catch (Throwable ex)
{
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
这是我的功能代码:
{{1}}