0

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

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

注意:如果需要传递一些东西,我确实有一个事件 bean,它可以传递给链中的所有东西,如果需要的话可以使用。

4

1 回答 1

1

您已经提到客户端处理发生在多个线程中,所以一个简单的ThreadLocal方法可能行不通……但是ThreadGroupLocal行得通吗?

请参阅 [ Java 中有线程组局部变量吗?

我建议的方法是只在日志框架中注册一个附加程序。该附加程序将是您编写的内容。该实现将委托给 ThreadLocal/ThreadGroupLocal 附加程序。该附加程序将是特定于客户端或控件的。

另请注意,您的 appender 不应配置在异步或批处理抽象之下。

于 2010-05-16T23:37:54.663 回答