如何用log4j2禁用hibernate 4输出?

fed*_*der 6 hibernate log4j log4j2

我正在使用以下log4j2.xml配置.我将它保存在资源文件夹的根目录中.

我无法摆脱INFO stdout hibernate输出.例如

06:17:01,835 INFO  [stdout] (ServerService Thread Pool -- 52)     insert into hibernate_sequence values ( 1 )
Run Code Online (Sandbox Code Playgroud)

我的配置有什么问题和/或缺少什么?

<?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>
Run Code Online (Sandbox Code Playgroud)

我将这些库附加到我的项目中.

        <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>
Run Code Online (Sandbox Code Playgroud)

我正在使用这个API版本的JPA/Hibernate 4.

        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.0-api</artifactId>
            <scope>provided</scope>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

Lok*_*oki 6

我遇到了同样的问题,关闭日志级别正在为我工​​作:

 <logger name="org.hibernate" level="OFF" additivity="false">
        ...
</logger>
Run Code Online (Sandbox Code Playgroud)


Ank*_*hal 0

执行:

\n\n
java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.OFF);\n
Run Code Online (Sandbox Code Playgroud)\n\n

在休眠的初始化对我有用之前。

\n\n

注意:上面的行将关闭所有注销 ( Level.OFF)。如果你想不那么严格,你可以使用

\n\n
java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.SEVERE);\n
Run Code Online (Sandbox Code Playgroud)\n\n

那已经足够安静了。(或者检查 java.util.logging.Level 类以获取更多级别)。

\n\n

还有房产

\n\n
hibernate.show_sql\nhibernate.generate_statistics\nhibernate.use_sql_comments\n
Run Code Online (Sandbox Code Playgroud)\n\n

直接控制日志记录以STDOUT绕过任何日志记录框架(您可以通过缺少消息的输出格式来识别该框架)。如果您使用 log4j 等日志记录框架,则应始终将该属性设置为false

\n\n

但是如果你想禁用所有控制台信息,你必须设置 org.hibernate 类的记录器级别NONEa FATAL

\n\n

show_sql

\n\n

启用将所有生成的 SQL 语句记录到控制台

\n\n
<property name="show_sql">false</property>\n
Run Code Online (Sandbox Code Playgroud)\n\n

format_sql

\n\n

对生成的 SQL 语句进行格式化以使其更具可读性,但会占用更多屏幕空间。

\n\n
<property name="format_sql">false</property>\n
Run Code Online (Sandbox Code Playgroud)\n\n

use_sql_comments

\n\n

Hibernate 将在所有生成的 SQL 语句中添加注释,以提示生成的 SQL 试图执行的操作

\n\n
<property name="use_sql_comments">false</property>\n
Run Code Online (Sandbox Code Playgroud)\n\n

巩固

\n\n
<property name="show_sql">true</property>\n<property name="format_sql">true</property>\n<property name="use_sql_comments">true</property>\n
Run Code Online (Sandbox Code Playgroud)\n