如何使用log4j2禁用Hibernate4输出?
我正在进行以下log4j2.xml配置。我把它保存在资源文件夹的根目录中 我无法摆脱信息标准输出hibernate输出。e、 g如何使用log4j2禁用Hibernate4输出?,hibernate,log4j,log4j2,Hibernate,Log4j,Log4j2,我正在进行以下log4j2.xml配置。我把它保存在资源文件夹的根目录中 我无法摆脱信息标准输出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"?> <Configur
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>
org.apache.logging.log4j
log4japi
2.0.2
org.apache.logging.log4j
log4j型芯
2.0.2
我使用的是JPA/Hibernate4的API版本
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<scope>provided</scope>
</dependency>
org.hibernate.javax.persistence
hibernate-jpa-2.0-api
假如
执行:
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类的FATAL
的记录器级别aNONE
显示sql
启用将所有生成的SQL语句记录到控制台
<property name="show_sql">false</property>
使用sql注释
Hibernate将在所有生成的SQL语句中添加注释,以提示生成的SQL试图做什么
<property name="use_sql_comments">false</property>
false
合并:
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
true
真的
真的
根据您的帖子,信息消息包含Hibernate生成的查询。这在hibernate.cfg.xml
配置文件中配置,属性为show\u sql`。您可以使用配置文件中的以下行禁用它
<property name="show_sql">false</property>
false
我也面临同样的问题,关闭日志级别对我来说很有效:
<logger name="org.hibernate" level="OFF" additivity="false">
...
</logger>
...
在您的HibernateUtil
类中,只写:
java.util.logging.Logger.getLogger("org.hibernate")
.setLevel(java.util.logging.Level.OFF)
在创建注释配置
对象之前
当使用log4j2.xml
和log4j2(log4j-api-2.2.jar和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);
}
}
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);
}
}