如何使用log4j2禁用Hibernate4输出?

如何使用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

我正在进行以下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"?>
<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
的记录器级别a
NONE

显示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);
    }
 }