gpt4 book ai didi

java - slf4j/logback - 某些线程的不同日志级别

转载 作者:搜寻专家 更新时间:2023-11-01 03:20:17 26 4
gpt4 key购买 nike

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

我正在处理的应用程序是一个网络应用程序。在我们的生产环境中,日志级别为 INFO。我们的服务团队不时会收到门票来处理。如果我们的服务团队正在复制票证,他们可以将日志级别放在 TRACE 上以仅用于他们的测试请求,那就太好了。这样,日志文件就不会被当时进入的所有其他请求所污染。

我们已经使用 header “X-TracingContext-Active=true”将某些额外数据写入日志记录。我的想法是,当 header 仅针对该请求(线程)为“真”时,将日志级别提高到 TRACE。

有没有一种方法可以做到这一点而无需创建我自己的日志记录实现或不必在每个类中编写此逻辑?

编辑:X-TracingActive-Context header 现在在每个请求的开头捕获。该值存储在 ThreadLocal 变量的辅助类中。我正在考虑重写 isInfoEnabled、isDebugEnabled、... 方法,以便它首先从帮助类中读取变量。但是我不知道如何在不实现自己的日志框架的情况下重写此方法。 logback的Logger类是final的。

有什么想法吗?

最佳答案

虽然不完全是您想要的(并且实现起来并不简单),但您可以将所有内容的级别设置为 TRACE 和 filter out “错误”的线程。虽然性能可能/将会非常糟糕,但如果您仅在这些特殊请求期间提高日志级别并在之后将其重置,它应该不会那么糟糕。

关于java - slf4j/logback - 某些线程的不同日志级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32307540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com