java – slf4j / logback – 某些线程的不同loglevel

我最近将我们的应用程序从log4j更改为logback / slf4j.一切都很好,但我想实现一些特定的东西.

我正在处理的应用程序是一个Web应用程序.在我们的生产环境中,日志级别位于INFO上.门票不时进入我们的服务团队处理.很高兴,当我们的服务团队正在复制门票时,他们可以将日志级别放在TRACE上,以满足他们的测试请求.这样,日志文件就不会与当时进入的所有其他请求混淆.

我们已经使用标题“X-TracingContext-Active = true”将某些额外数据写入日志记录.我的想法是当标题对于该请求(线程)为’true’时,将loglevel增加到TRACE.

有没有办法在不需要创建自己的日志记录实现或必须在每个类中编写此逻辑的情况下执行此操作?

编辑:
现在,在每个请求开始时捕获X-TracingActive-Context标头.该值存储在ThreadLocal变量的辅助类中.我想覆盖isInfoEnabled,isDebugEnabled,…方法,所以它首先从辅助类中读取变量.但我不知道如何在不实现自己的日志框架的情况下覆盖此方法. Logger类的logback是最终的.

有任何想法吗?

最佳答案 虽然不是你想要的(并且不是很容易实现),你可以为所有内容和
filter out“错误”线程设置TRACE级别.虽然性能可能会非常糟糕,但是如果你只在这些特殊请求的持续时间内提高日志级别并在之后重新设置它,那么它应该不会那么糟糕.

点赞