gpt4 book ai didi

docker - log4j2运行时配置-在集群/docker环境中

转载 作者:行者123 更新时间:2023-12-02 19:17:18 26 4
gpt4 key购买 nike

我有各种具有不同日志级别的记录器。
最初从log4j2.xml加载<Logger name="a.b.c" level="INFO">我想提供一个使用API​​在运行时修改或更新日志级别的选项。以下代码行可以正常工作。我只是在提到相关内容。

LoggerContext cxt = (LoggerContext) LogManager.getContext(false);
for (Logger l : cxt.getLoggers()) {
....
// I am getting logger config of the logger (I am doing this update only once per unique logger config)
LoggerConfig lc = l.get();
// This won't be hardcoded but will be obtained from request
lc.setLevel(Level.ERROR);
}
cxt.updateLoggers();

如前所述,当我在本地测试应用程序时,此方法工作正常。它正在更新所有记录器。
我正在查看log4j2配置更新文档
https://logging.apache.org/log4j/2.x/manual/cloud.html

Managing Logging Configuration

Also, in a micro-services, clustered environment it is quite likely that these changes will need to be propagated to multiple servers at the same time. Trying to achieve this via REST calls could be difficult.


我只是想知道如何在群集环境中或在运行应用程序的多个docker容器的情况下实现这种传播。我知道我可以调用单个容器上的更新,但是我的问题是是否有可能一次编程地更新所有容器中的日志级别?
谢谢你的帮助。

最佳答案

我建议回顾Logging in the Cloud并看看Log4j Spring Cloud Sample Application。如果您使用的是Spring Boot应用程序,则可以在对Spring Cloud Config中托管的日志记录配置进行更改时自动收到通知。多个应用程序可以共享一个配置文件。
您可以在没有Spring Boot的情况下完成同样的事情,但是要实现自己的RabbitMQ事件监听器并触发Log4j的Watcher会更加困难。

关于docker - log4j2运行时配置-在集群/docker环境中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62684028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com