从log4j中的调用实例或logback继承appender

时间:2010-05-16 19:00:48

标签: java logging log4j logback

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

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

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

1 个答案:

答案 0 :(得分:1)

您已经提到过客户端处理是在多个线程中进行的,因此简单的ThreadLocal方法可能无效......但是ThreadGroupLocal会有效吗?

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

我建议的机智只是在登录框架中注册了一个appender。那个追随者会是你写的东西。该实现将委托给ThreadLocal / ThreadGroupLocal appender。 appender将是客户端或控件特定的。

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