在所有实例中动态更改日志级别



比方说,我有一个spring-boot应用程序,我使用Log4j进行日志记录。在那里,我想在不启动整个应用程序的情况下动态更改日志级别
这可以通过公开一些端点来设置级别来实现。但是,在生产级别,可能存在同一应用程序的多个实例在不同的服务器上运行
那么,我们如何在运行由kubernetes管理的应用程序的所有容器实例中动态设置日志记录级别呢?

不确定K8上的配置映射将如何解决问题。一旦应用程序启动,就会使用/读取环境变量、命令行参数和配置文件。在不重新启动的情况下,它们上的任何更改都不会重新反映到应用程序中。

我使用的一个解决方案是在记录器库(log4j或logback(上设置扫描间隔。例如,在logback上有一个自动扫描配置参数https://logback.qos.ch/manual/configuration.html#autoScan.

这允许应用程序按照定义的间隔定期检查您定义日志级别的配置文件上的更改。因此,即使您使用了应用程序的多个实例,所有实例都会扫描同一个配置文件并在不重新启动的情况下进行更新。

最新更新