我的应用程序使用hibernate及其打印大量日志。 我尝试将日志记录设置为以下错误级别。但是,它不会将休眠日志记录设置为错误级别。 这里缺少什么吗?
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
<?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>
使用的冬春季节:
<spring-framework.version>4.0.3.RELEASE</spring-framework.version>
<hibernate.version>3.6.9.Final</hibernate.version>
记录其打印结果
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: '.'
答案 0 :(得分:5)
线程名称似乎表明您正在Weblogic容器上运行。您确定完全使用了日志记录配置吗? (例如,参见log4j2-not-working-in-weblogic-12-2-1)。
除此之外,我也看不到使用additivity =“ false”然后重复完全相同的附加程序的意义。您为什么不喜欢这样更简单的东西?
<Loggers>
<Root level="info">
<appender-ref ref="CONSOLE" />
</Root>
<Logger name="com.myapp" level="error"/>
<Logger name="org.hibernate" level="error"/>
</Loggers>
答案 1 :(得分:0)
如果要通过属性文件选项隐藏SQL,则它是否是Spring应用程序?
spring.jpa.show-sql=false
如果不是Spring,则可以尝试使用此方法(在Sprint应用程序中,例如Hibernate日志配置有效):
<Logger name="org.hibernate.SQL" level="error"/>
<Logger name="org.hibernate.type" level="error"/>
或您想要的任何日志级别。
答案 2 :(得分:0)
尝试设置更合理的日志记录级别。将日志记录级别设置为info
意味着仅记录info
或更高级别(warn
,error
和fatal
)级别的日志事件,即{{1 }}日志事件将被忽略。
debug
或在log4j配置文件的XML version中:
log4j.logger.org.hibernate=info
另请参阅log4j manual。
答案 3 :(得分:0)
您的记录器似乎没有选择正确的文件配置,可能有两个原因。
<Root level="info">
<appender-ref ref="CONSOLE" />
</Root>
到
<Root level="info">
<AppenderRef ref="CONSOLE" />
</Root>
以上两个确定的原因来自您在 log4j2.xml 中使用的日志记录模式,并且共享的实际日志完全不同。从 log4j2.xml
查找所需的图案布局<PatternLayout pattern="[%d{dd MMM yyyy HH:mm:ss}] [%-5p] [%t] [%C{1}:%M:%L] - %m%n" />
它应该打印日志的样子
[16 Apr 2020 19:05:16.733] [...] [...] [...:...:...] - .......
实际日志具有不同的模式。
19:05:16.733 [...] ... ....... - .....
如下所述。
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
答案 4 :(得分:0)
设置休眠配置属性:
hibernate.show_sql=false