在 docker 应用程序中使用 Logback 更改动态日志级别

Bha*_*waj 6 logging logback logback-classic

Logback 有一个功能可以扫描 logback.xml 中的更改(根据这个)——这是一个很棒的功能,它允许长时间运行的应用程序以 INFO 作为默认级别,当必须简要调查某些事情时将其更改为 DEBUG。

但是在我最近的应用程序(作为 Docker 容器托管在我公司的 K8s 集群上)中,我无法使用上述功能,因为:

  • 还没有提供托管外部卷的条款,我可以在其中放置我的 logback.xml(在调试期间由开发人员更改)
  • 还没有规定无需重新启动即可更改正在运行的容器中的环境变量
  • 没有 JNDI 服务器来映射日志变量

鉴于此,有没有一种方法可以让开发人员在运行时更改应用程序的日志记录级别而无需重新启动应用程序/容器?

xce*_*sco 2

我有一个类似的问题:我需要在运行时更改应用程序日志级别而不重新启动 Spring Boot 应用程序。在我的情况下,我不是在 docker 环境中工作,但我认为我们问题的解决方案是相同的。

经过研究,我发现了3种可能的解决方案:

  1. 在运行时更改日志文件
  2. 启用 JMX 并与 JConsole 一起更改日志级别
  3. 使用 Spring Boot 管理。

如果您的应用程序是 Spring Boot 应用程序,则第 3 个解决方案是最好的。您可以阅读以下教程在运行时更改日志记录级别

春季启动管理员

您可以在Github上找到如何启用管理界面的示例。