在 Spring Boot 应用程序中未针对休眠和弹簧过滤 Log4j2 日志级别
Posted
技术标签:
【中文标题】在 Spring Boot 应用程序中未针对休眠和弹簧过滤 Log4j2 日志级别【英文标题】:Log4j2 log levels not being filtered for hibernate and spring in Spring Boot application 【发布时间】:2016-12-15 16:26:00 【问题描述】:我已根据this 手册将 Spring Boot 配置为使用 Log4j2。我想按 Root 记录器中设置的级别过滤所有日志。这是我的 log4j2-spring.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="LOG_PATTERN">%dHH:mm:ss.SSS [%t] %-5level %logger36 -s %msg%n</Property>
</Properties>
<Appenders>
<Console name="Console">
<PatternLayout pattern="$LOG_PATTERN"/>
</Console>
<File name="File" fileName="app.log">
<PatternLayout pattern="$LOG_PATTERN"/>
</File>
<SMTP name="Mail"
...
>
<ThresholdFilter level="ERROR" onMatch="ACCEPT"/>
<PatternLayout pattern="$LOG_PATTERN"/>
</SMTP>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
<AppenderRef ref="Mail"/>
</Root>
</Loggers>
</Configuration>
问题是我仍然看到来自 hibernate 和 spring 框架的 DEBUG 输出。我设法通过为某些条目指定完整的包名称来过滤单个日志,如下所示:
<Loggers>
<Logger name="org.springframework.boot.context.web" level="INFO" />
<Root level="INFO">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
<AppenderRef ref="Mail"/>
</Root>
</Loggers>
当然,对所有软件包都这样做是不可行的。感谢您的帮助!
【问题讨论】:
【参考方案1】:终于修好了。问题是我在 application.properties 文件中有一行 debug=true
并且 log4j2-spring.xml 配置中的过滤器被简单地忽略了。
【讨论】:
以上是关于在 Spring Boot 应用程序中未针对休眠和弹簧过滤 Log4j2 日志级别的主要内容,如果未能解决你的问题,请参考以下文章
在 spring-boot Web 应用程序中未考虑 web.xml 会话超时?
Spring Boot 在关闭时关闭休眠会话 - 在 @Async 方法完成之前