spring - 如何在 Spring Boot 服务器启动期间查看自动配置日志输出
问题描述
如何在 Spring Boot 服务器启动期间查看自动配置日志输出
我创建了一个弹簧启动应用程序。它使用一个共享库(通过 maven 依赖的 Spring boot jar)。共享库类通过 META-INF/spring.factories 加载
我已经在 spring.factories 中提到了库中的类。共享库的工作是从 application.properties 中读取 Vault 角色 id 和 Vault secret id 值,并调用 REST API 并从 Vault 中获取 secret。获取秘密后,它会在系统属性中再次设置该值。
for (Map.Entry<String, String> entry : allSecrets.entrySet())
{
System.setProperty(entry.getKey(), entry.getValue());
}
一切都按预期工作。但我无法在我的日志中看到来自共享库的日志。共享库的包结构是 com.myorg.abc。我的spring boot包结构是com.myorg.xyz
我在应用程序属性中尝试了以下内容。
logging.level.root= DEBUG
logging.level.com.myorg.xyz: DEBUG
logging.level.com.myorg.abc: DEBUG
logging.level.org.springframework.boot.autoconfigure.logging=DEBUG
我只能从我的应用程序中获取日志,但不能从共享库中获取日志。但是当我将共享库 Logger.error 更改为 System.out 时,我会在我的应用程序中收到消息。如何在我的应用程序中查看共享库的日志。
解决方案
Spring Boot 初始化日志记录至少 3 次。第一次发生在加载 SpringApplication 时。它在访问 Spring 中的任何内容之前创建一个 SLF4J Logger。这会导致您选择初始化的任何日志记录实现。默认情况下,它将使用 Spring jar 中的日志记录配置。使用 Log4j 2,您可以通过将 log4j.configurationFile 设置为所需配置的位置作为系统属性或 log4j.component.properties 文件来覆盖它。
Spring 所做的一切都将使用此配置进行记录,直到它再次初始化日志配置,这由 bootstrap.yml 控制。最后,您的应用程序的日志配置被初始化,该配置可以从 application.yml 或再次从 bootstrap.yml 配置。
推荐阅读
- testflight - 升级到 Catalina 后 iTMSTransporter“访问文件时出错”
- javascript - Java Script 调整,返回一页
- javascript - 使用扩展运算符“TypeError:Math.min 不可迭代”
- html - 如何水平扩展页脚 div?
- javascript - 如何构造这个数组,分离类别和产品
- php - 如何使用 JSON 数据并准备 PHP 数组
- java - SonarQube 8.2 分析显示 0 代码覆盖率
- c# - C# 。如何使注册表编辑的 Caret Width 立即生效?
- c# - 编辑配置文件视图 asp.net-mvc5
- c++ - 即使我有一个cout,它也不会回来