我有一个带有多个记录器的 log4j,用于多线程应用程序的附加程序。在一种情况下,我将尝试连接到远程服务。如果连接失败,我会反复尝试。
我只希望 log4j 第一次使用它的原始配置。但是对于所有其他后续尝试,我想使用不那么冗长的配置。这不应更改可能在相同对象上运行的其他线程的日志记录配置。请注意,我无法提前知道在调用中使用了哪些记录器来连接到远程服务。
那么,有没有一种方法可以在一次调用期间全局更改日志记录而不改变其他并发线程的行为?
查看 API 的这一部分:
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html
您可以调用 setLevel(Level lev) 方法并进行一些更改。但是,我不能 100% 确定您不会影响其他线程,因为 Logger 通常基于一个类。
我认为您必须为每个用户会话获取一个 Logger 对象,但我不能 100% 确定它是否会导致堆问题。
也许控制代码的输出(例如,如果这是第一次尝试,则仅向日志发送一些消息)。
问候