繁体   English   中英

从log4j或logback中的调用实例继承追加程序

[英]Inherit appenders from calling instance in log4j or logback

在我的程序中,我有2个单独的日志事件流(为简单起见将它们称为流,实际上是2个附加程序)。 Stream1包含客户端日志记录,Stream2包含控件日志记录。 现在,这看起来似乎很容易,但是根据情况,某些类可以同时出现在客户端日志记录和服务器日志记录中。 客户端需要的命令发生在2个单独的线程中(一个线程是从线程池中随机提取的),这使情况进一步复杂化,因此无法使用MDC或NDC进行任何形式的跟踪。

. 真正简化此操作的是,记录程序可以从调用继承附加程序。 这样,我可以为2个记录器设置2个附加程序并完成。 但是我不知道如何清洁或轻松地做到这一点。 有人可以提供任何建议吗?

注意:如果需要传递一些东西,我确实有一个事件bean,该事件bean被传递到链中的所有对象,必要时可以使用。

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

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

我建议的策略是仅在日志记录框架中注册一个追加程序。 该附加程序将由您编写。 该实现将委派给ThreadLocal / ThreadGroupLocal附加程序。 的appender将客户端或特定控制。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM