gpt4 book ai didi

java - 从 log4j 或 logback 中调用实例继承附加程序

转载 作者:行者123 更新时间:2023-12-01 16:04:48 30 4
gpt4 key购买 nike

在我的程序中,我有 2 个独立的日志事件流(为简单起见,将它们称为流,实际上是 2 个附加程序)。 Stream1 包含客户端日志记录,Stream2 包含控制日志记录。现在这似乎很容易,除了某些类可以同时出现在客户端日志记录和服务器日志记录中,具体取决于情况。使问题进一步复杂化的是,客户端想要的命令发生在 2 个独立的线程中(其中一个是从线程池中随机获取的),因此不可能使用 MDC 或 NDC 进行任何类型的跟踪。

如果记录器可以从调用实例继承附加程序,那么真正可以简化这一过程。这样我就可以为 2 个记录器设置 2 个附加程序并完成。但是我不知道如何干净或轻松地做到这一点。谁能就如何做到这一点提供任何建议?

注意:如果需要传递某些内容,我确实有一个事件 bean,它会传递到链中的所有内容,以便在必要时使用。

最佳答案

您已经提到客户端处理发生在多个线程中,因此简单的 ThreadLocal 方法可能不起作用...但是 ThreadGroupLocal 可以吗?

参见[ Are there thread group-local variables in Java?

我建议的策略是只向日志框架注册一个附加程序。该附加程序将是您编写的东西。该实现将委托(delegate)给 ThreadLocal/ThreadGroupLocal 附加程序。 附加程序将是特定于客户端或控件的。

另请注意,您的附加程序不应在异步或批处理抽象下进行配置。

关于java - 从 log4j 或 logback 中调用实例继承附加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2845052/

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