Java 更改呼叫持续时间的Log4j阈值

Java 更改呼叫持续时间的Log4j阈值,java,logging,log4j,Java,Logging,Log4j,我有一个带有多个记录器的log4j,多线程应用程序中使用的appender。在一个场景中,我将尝试连接到远程服务。如果连接失败,我将重复尝试 我只希望log4j第一次使用它的原始配置。但是,对于以后的每一次尝试,我都希望使用一个不太详细的配置。这不应更改可能在相同对象上运行的其他线程的日志记录配置。请注意,我无法预先知道调用中使用了哪些记录器来连接远程服务 那么,有没有一种方法可以在一次调用期间全局更改日志记录,而不更改其他并发线程的行为?看看API的这一部分: 您可以调用setLevel(L

我有一个带有多个记录器的log4j,多线程应用程序中使用的appender。在一个场景中,我将尝试连接到远程服务。如果连接失败,我将重复尝试

我只希望log4j第一次使用它的原始配置。但是,对于以后的每一次尝试,我都希望使用一个不太详细的配置。这不应更改可能在相同对象上运行的其他线程的日志记录配置。请注意,我无法预先知道调用中使用了哪些记录器来连接远程服务


那么,有没有一种方法可以在一次调用期间全局更改日志记录,而不更改其他并发线程的行为?

看看API的这一部分:

您可以调用setLevel(Level-lev)方法并进行一些更改。但是,我不能100%确定您不会影响其他线程,因为记录器通常基于类

我认为您必须为每个用户会话获取一个Logger对象,但我不能100%确定它是否会导致堆问题

可能控制代码的输出(例如,仅当第一次尝试时才向日志发送一些消息)


关于

谢谢,但是设置级别确实会影响其他线程。否则,我无法访问记录消息的代码。我只能对log4j配置进行操作。这将非常困难,因为您将无法修改记录器的行为。除非其他人看到了一些技巧,否则我认为不接触源代码就不可能做你想做的事情。