根据调用堆栈有条件地禁用记录器

时间:2013-03-28 01:48:50

标签: java log4j

我有一个Web服务,其他几个Web服务作为依赖项。其中一个依赖项是一项服务,我每隔15秒发送一小部分不重要的数据。我每10分钟将重要的数据发送到另一个依赖项。我希望看到每10分钟发生一次的呼叫的日志行,而不是每15秒发生一次的呼叫(这使得我的日志真的很吵)。

问题是两个调用是使用相同的第三方类进行的:httpclient。日志行如下所示:

27 Mar 2013 18:14:54,001 [DEBUG]  (main) httpclient.wire.content: blah blah blah

我尝试使用NDC,但无法弄清楚如何根据堆栈顶部的诊断上下文配置记录器阈值。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

将httpclient.wire.content记录器级别至少置于WARN并在发送重要数据之前进行日志调用。

答案 1 :(得分:0)

如果您想在使用重要数据拨打电话后打开/关闭日志记录或更改日志级别,您可以执行以下操作

LogManager.getLogger(Class.forName("httpclient.wire.content"))‌​.setLevel(Level.OFF);

更改类的级别应更改该特定类的日志记录。

仅供参考 - LogManager.getCurrentLoggers();应该返回所有记录器