从 Maven 禁用休眠日志记录

Posted

技术标签:

【中文标题】从 Maven 禁用休眠日志记录【英文标题】:Disable logging with hibernate from maven 【发布时间】:2015-04-07 21:08:48 【问题描述】:

我最近在我的 pom.xml 中添加了 hibernate,它运行良好。但是,日志记录很烦人,我不知道如何关闭它或限制它的级别(我什至不知道它包含什么来启动所有这些日志记录)。我对此不熟悉,不熟悉 Maven 和休眠。

这是我的 pom.xml 依赖项:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.0.1.Final</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>4.0.1.Final</version>
        <classifier>tests</classifier>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.10</version>
    </dependency>
</dependencies>

日志是这样开始的:

21:17:15.115 [main] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider
21:17:15.130 [main] DEBUG org.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BooleanType@ba4d54
21:17:15.130 [main] DEBUG org.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BooleanType@ba4d54
21:17:15.130 [main] DEBUG org.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BooleanType@ba4d54

我尝试将 log4j.properties 文件添加到我的资源中,但它似乎没有改变任何东西。我还尝试了 simplelog.properties(在其他没有帮助的 SO 帖子之后)。我有点卡在这里,非常感谢您的帮助。理想情况下,我只想将记录器设置为关闭,或者只设置 mysql 查询。

这是依赖树:

    [INFO] org.springframework:gs-rest-service:jar:0.1.0
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.1.10.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:1.1.10.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:1.1.10.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:1.1.10.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:1.1.10.RELEASE:compile
[INFO] |  |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.7:compile
[INFO] |  |  |  |  \- org.slf4j:slf4j-api:jar:1.7.7:compile
[INFO] |  |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.7:compile
[INFO] |  |  |  +- org.slf4j:log4j-over-slf4j:jar:1.7.7:compile
[INFO] |  |  |  \- ch.qos.logback:logback-classic:jar:1.1.2:compile
[INFO] |  |  |     \- ch.qos.logback:logback-core:jar:1.1.2:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.13:runtime
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.1.10.RELEASE:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:7.0.57:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:7.0.57:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-logging-juli:jar:7.0.57:compile
[INFO] |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:7.0.57:compile
[INFO] |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.3.4:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.3.4:compile
[INFO] |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.3.4:compile
[INFO] |  +- org.hibernate:hibernate-validator:jar:5.0.3.Final:compile
[INFO] |  |  +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] |  |  \- com.fasterxml:classmate:jar:1.0.0:compile
[INFO] |  +- org.springframework:spring-core:jar:4.0.8.RELEASE:compile
[INFO] |  +- org.springframework:spring-web:jar:4.0.8.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-aop:jar:4.0.8.RELEASE:compile
[INFO] |  |  |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] |  |  +- org.springframework:spring-beans:jar:4.0.8.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-context:jar:4.0.8.RELEASE:compile
[INFO] |  \- org.springframework:spring-webmvc:jar:4.0.8.RELEASE:compile
[INFO] |     \- org.springframework:spring-expression:jar:4.0.8.RELEASE:compile
[INFO] +- org.hibernate:hibernate-core:jar:4.0.1.Final:compile
[INFO] |  +- commons-collections:commons-collections:jar:3.2.1:compile
[INFO] |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile
[INFO] |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |  |  \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] |  +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile
[INFO] |  +- org.jboss.logging:jboss-logging:jar:3.1.0.CR2:compile
[INFO] |  +- org.javassist:javassist:jar:3.18.1-GA:compile
[INFO] |  \- org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile
[INFO] +- org.hibernate.common:hibernate-commons-annotations:jar:tests:4.0.1.Final:compile
[INFO] \- mysql:mysql-connector-java:jar:5.1.10:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 35.918 s
[INFO] Finished at: 2015-02-07T22:09:37+00:00
[INFO] Final Memory: 20M/203M
[INFO] ------------------------------------------------------------------------

解决方案是在项目的资源文件夹中添加一个名为“logback.xml”的配置文件。这个文件的内容是:

    <configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- encoders are assigned the type
         ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
    <encoder>
      <pattern>%dHH:mm:ss.SSS [%thread] %-5level %logger36 - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

【问题讨论】:

感谢您发布您的解决方案。它帮助了我。 【参考方案1】:

您可能在日志框架配置中设置了全局 DEBUG 日志级别。

您只需将org.hibernate 日志级别设置为WARNERROR

Logback/Log4j2

<logger name="org.hibernate" level="warn"/>

Log4j

<logger name="org.hibernate">
   <level value="warn"/> 
</logger>

【讨论】:

感谢您的回答,但我不知道在哪里可以找到日志记录框架配置,我认为这是问题所在。有什么提示吗?由于我没有创建任何配置文件,我猜这是默认设置,或者打包在 maven 检索到的其中一个 jar 中。 您需要运行 mvn dependency:tree 并检查 log4j 和 logback。覆盖一些默认日志配置的方法是在src/main/resources 中添加您自己的配置。 好的,我可以在我的树中看到这个:[INFO] | | | \- ch.qos.logback:logback-classic:jar:1.1.2:compile [INFO] | | | \- ch.qos.logback:logback-core:jar:1.1.2:compile 我假设这意味着我正在使用 logback(我不完全确定这是什么),因此我需要你的第一段代码 我将在 src/main/resources 中创建一个配置文件(现在查找命名等) 如何在 log4j2.properties 文件中进行操作?

以上是关于从 Maven 禁用休眠日志记录的主要内容,如果未能解决你的问题,请参考以下文章

休眠(4.3.11-Final)日志记录未桥接到 log4j2?

从 Maven 插件为嵌入式 Tomcat 配置日志记录

如何禁用/关闭Storm的日志记录功能

如何使用 log4j2.xml 配置休眠日志记录?

如何在Wildfly 8.2.0中的server.log文件中禁用日志记录应用程序日志

使用 syslog 时禁用/启用日志记录