Spring Boot - 设置使用 Java Util Logging 的外部 jar 的日志记录级别(7 月)
Posted
技术标签:
【中文标题】Spring Boot - 设置使用 Java Util Logging 的外部 jar 的日志记录级别(7 月)【英文标题】:Spring Boot - set logging level of external jar which is using Java Util Logging (jul) 【发布时间】:2014-10-11 11:04:24 【问题描述】:根据 Spring Boot 文档,可以通过使用 Spring Boot Logging Starter 并在应用程序属性中设置适当的 logging.level 来设置多个日志框架(jul、slf4j 等)的日志级别。除了我使用的库使用 jul 和日志级别 Level.FINER 进行记录外,一切正常。但是,Level.INFO 已正确记录。
我将 application.properties 中的级别设置为:
logging.level.=TRACE
应该根据SLF4JBridgeHandler记录所有内容。
是我遗漏了什么还是是 logback 的问题(由启动器使用)而不是我的误解?
【问题讨论】:
logging.level.
不匹配任何内容。我希望logging.level.*
能够工作。否则指定 FQN 或 atl 东部基础包。
logging.level.ROOT 将设置默认记录器级别。
M. Deinum 抱歉,这只是错字@Dave 我也试过了,但它也没有从使用 JUL 的那个库中记录……我也尝试使用 logback.xml 设置,结果相同。是否可能没有正确设置 logback - jul 桥我看到 logback-core-1.1.2.jar 和 logback-classic-1.1.2.jar 但没有桥 jar
你肯定需要桥接,但如果你使用 spring-boot-starter-*
来表示你应该存在的依赖项。
我在我的build.gradle compile 'org.springframework.boot:spring-boot-starter-logging'
中有这种依赖关系,那么与spring-boot-starter-*
有什么不同吗?我的 Spring Boot 版本是 1.1.4.RELEASE
【参考方案1】:
SLF4JBridgeHandler 仅从 jul Loggers 上的启用级别接收 LogRecord (这个事实隐藏在install方法的javadoc中)
由于默认的 JUL 配置仅记录 INFO 或更高级别,因此网桥不会接收 FINE/FINER/FINEST 级别。
为了测试,您可以像这样强制根 jul 记录器的级别:
LogManager.getLogManager().getLogger("").setLevel(Level.FINE);
(或在您的 JVM 上使用 .level=FINE 显式配置自定义 logging.properties)
此配置必须使用 slf4j 级别配置完成(通过 logback.xml 或 application.properties 中的 logging.level.xxxxxx 属性)
(请注意,您应该在 slf4j 文档warns 中更具体地说明“jul 启用”但“slf4j 禁用”日志的性能影响)
【讨论】:
【参考方案2】:请看我的相关回答:https://***.com/a/33770877/3004042
简而言之,使用带有 Logback 的 Spring Boot 1.3.0 版本。
【讨论】:
这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review @JeenBroekstra 你是什么意思?这就是答案。用户可以使用 Spring Boot 1.3.0 版本和 logback 解决问题,因为 Spring Boot 1.3.0 添加了与此问题相关的功能。 抱歉,你是对的。我误读并认为您只提供了一个链接,在这种情况下,它应该是评论,而不是答案。我忽略了最后一点。 @NathanHughes 不,我会等几天再接受我自己的答案以获得比我更好的答案。但与此同时,这个答案可以帮助其他人,因为这个答案无论如何都解决了问题。关于近距离投票,我认为它们是两个独立的问题,它们恰好具有相同的原因,因此具有相同的答案。所以最好是两个分开的。以上是关于Spring Boot - 设置使用 Java Util Logging 的外部 jar 的日志记录级别(7 月)的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot Java Config 设置会话超时
如何在spring boot应用程序中配置Jackson而不覆盖纯java中的springs默认设置