[英]How to stop hibernate excessive logging?
My application uses hibernate and its printing lot of logging.我的应用程序使用 hibernate 及其打印日志记录。 I tried to set logging to error level as below.
我尝试将日志记录设置为错误级别,如下所示。 However, it does not set hibernate logging to error level.
但是,它不会将 hibernate 日志记录设置为错误级别。 Is anything missing here?
这里有什么遗漏吗?
pom.xml: pom.xml:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
<version>2.11.2</version>
</dependency>
log4j2.xml log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout
pattern="[%d{dd MMM yyyy HH:mm:ss}] [%-5p] [%t] [%C{1}:%M:%L] - %m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.myapp" level="error" additivity="false">
<AppenderRef ref="CONSOLE" />
</Logger>
<Root level="info">
<appender-ref ref="CONSOLE" />
</Root>
<Logger name="org.hibernate" level="error" additivity="false">
<AppenderRef ref="CONSOLE" />
</Logger>
</Loggers>
</Configuration>
Hibernate and spring version used: Hibernate 和 spring 使用的版本:
<spring-framework.version>4.0.3.RELEASE</spring-framework.version>
<hibernate.version>3.6.9.Final</hibernate.version>
Log its printing记录其打印
19:05:16.733 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.hql.ast.ErrorCounter - throwQueryException() : no errors
19:05:16.734 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.h.hql.ast.QueryTranslatorImpl - HQL: SELECT g FROM myClass g
19:05:16.734 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.h.hql.ast.QueryTranslatorImpl - SQL: sql sample
19:05:16.734 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.hql.ast.ErrorCounter - throwQueryException() : no errors
19:05:16.734 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.hibernate.impl.SessionFactoryImpl - Checking named query: Underlyer.findAll
19:05:16.735 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.h.hql.ast.QueryTranslatorImpl - parse() - HQL: SELECT u FROM entity.class1 u
19:05:16.737 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.hql.ast.AST - --- HQL AST ---
\-[QUERY] Node: 'query'
\-[SELECT_FROM] Node: 'SELECT_FROM'
+-[FROM] Node: 'FROM'
| \-[RANGE] Node: 'RANGE'
| +-[DOT] Node: '.'
| | +-[DOT] Node: '.'
| | | +-[DOT] Node: '.'
| | | | +-[DOT] Node: '.'
| | | | | +-[DOT] Node: '.'
| | | | | | +-[DOT] Node: '.'
The thread names seem to suggest that you're running on a weblogic container.线程名称似乎表明您正在 weblogic 容器上运行。 Are you sure that the logging config is being used at all?
您确定正在使用日志记录配置吗? (eg see log4j2-not-working-in-weblogic-12-2-1 ).
(例如,请参阅log4j2-not-working-in-weblogic-12-2-1 )。
Apart from that, I also don't see the point in using additivity="false" and then repeating exactly the same appenders.除此之外,我也不认为使用 additivity="false" 然后重复完全相同的附加程序有什么意义。 Why don't you prefer something simpler like this?
你为什么不喜欢这样简单的东西呢?
<Loggers>
<Root level="info">
<appender-ref ref="CONSOLE" />
</Root>
<Logger name="com.myapp" level="error"/>
<Logger name="org.hibernate" level="error"/>
</Loggers>
Is it a Spring application if so you could hide SQL from printing via properties file option:它是一个 Spring 应用程序吗,如果是这样,您可以通过属性文件选项隐藏 SQL 不打印:
spring.jpa.show-sql=false
If it is not a Spring you could try this (in Sprint apllication such Hibernate log config works):如果它不是 Spring,你可以试试这个(在 Sprint 应用中,Hibernate 日志配置有效):
<Logger name="org.hibernate.SQL" level="error"/>
<Logger name="org.hibernate.type" level="error"/>
OR whatever Log Level do you want.或者你想要的任何日志级别。
My application uses hibernate and its printing lot of logging.我的应用程序使用 hibernate 及其打印大量的日志记录。 I tried to set logging to error level as below.
我尝试将日志记录设置为错误级别,如下所示。 However, it does not set hibernate logging to error level.
但是,它不会将 hibernate 日志记录设置为错误级别。 Is anything missing here?
这里有什么遗漏吗?
pom.xml: pom.xml:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
<version>2.11.2</version>
</dependency>
log4j2.xml log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout
pattern="[%d{dd MMM yyyy HH:mm:ss}] [%-5p] [%t] [%C{1}:%M:%L] - %m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.myapp" level="error" additivity="false">
<AppenderRef ref="CONSOLE" />
</Logger>
<Root level="info">
<appender-ref ref="CONSOLE" />
</Root>
<Logger name="org.hibernate" level="error" additivity="false">
<AppenderRef ref="CONSOLE" />
</Logger>
</Loggers>
</Configuration>
Hibernate and spring version used:使用的 Hibernate 和 spring 版本:
<spring-framework.version>4.0.3.RELEASE</spring-framework.version>
<hibernate.version>3.6.9.Final</hibernate.version>
Log its printing记录其打印
19:05:16.733 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.hql.ast.ErrorCounter - throwQueryException() : no errors
19:05:16.734 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.h.hql.ast.QueryTranslatorImpl - HQL: SELECT g FROM myClass g
19:05:16.734 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.h.hql.ast.QueryTranslatorImpl - SQL: sql sample
19:05:16.734 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.hql.ast.ErrorCounter - throwQueryException() : no errors
19:05:16.734 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.hibernate.impl.SessionFactoryImpl - Checking named query: Underlyer.findAll
19:05:16.735 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.h.hql.ast.QueryTranslatorImpl - parse() - HQL: SELECT u FROM entity.class1 u
19:05:16.737 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.hql.ast.AST - --- HQL AST ---
\-[QUERY] Node: 'query'
\-[SELECT_FROM] Node: 'SELECT_FROM'
+-[FROM] Node: 'FROM'
| \-[RANGE] Node: 'RANGE'
| +-[DOT] Node: '.'
| | +-[DOT] Node: '.'
| | | +-[DOT] Node: '.'
| | | | +-[DOT] Node: '.'
| | | | | +-[DOT] Node: '.'
| | | | | | +-[DOT] Node: '.'
What seems that your logger is not picking the right file configuration, there might be two reasons.您的记录器似乎没有选择正确的文件配置,可能有两个原因。
<Root level="info">
<appender-ref ref="CONSOLE" />
</Root>
to到
<Root level="info">
<AppenderRef ref="CONSOLE" />
</Root>
The above two identified reasons are from the logging pattern you are using in your log4j2.xml and actual logs shared are totally different.以上两个确定的原因来自您在log4j2.xml中使用的日志记录模式,实际共享的日志完全不同。 Look your desired pattern layout from log4j2.xml
从log4j2.xml查看您想要的模式布局
<PatternLayout pattern="[%d{dd MMM yyyy HH:mm:ss}] [%-5p] [%t] [%C{1}:%M:%L] - %m%n" />
It should print logs looks like它应该打印日志看起来像
[16 Apr 2020 19:05:16.733] [...] [...] [...:...:...] - .......
where actual logs have different patterns.实际日志有不同的模式。
19:05:16.733 [...] ... ....... - .....
as mentioned under.如下所述。
19:05:16.733 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG org.hibernate.hql.ast.ErrorCounter - throwQueryException() : no errors
19:05:16.734 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.h.hql.ast.QueryTranslatorImpl - HQL: SELECT g FROM myClass g
19:05:16.734 [[ACTIVE] ExecuteThread: '18' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.h.hql.ast.QueryTranslatorImpl - SQL: sql sample
Set the hibernate Configuration properties:设置 hibernate 配置属性:
hibernate.show_sql=false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.