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