我有一个WPF应用程序和一个工作进程,它从客户端应用程序中获取队列中的消息。
有几个用户可以点击多个项目,从而将多个进程发送到队列,因此我需要为每个进程提供某种唯一ID。
我想为此实现检测日志记录,但我发现很难为该进程提供单个主键或ID。我有消息ID可以用作ID,但是在调用方法时会丢失,我不想将它传递给每个方法。
例如,如果流程如下:
基本上我不想将消息ID传递给每个方法(例如步骤4),因为它变得非常混乱。
我正在使用Castle Proxies来处理日志记录,但是再次找不到一个只有日志的公共ID的好方法,所以我可以一直记录请求以及每个部分需要多长时间。
我有一些非常相似的东西:Instrumentation With Interceptors
但是除了要调用的每个方法的ID之外,我还需要一个整体ID来将整个请求组合在一起。
据我所知,有两个选项:1。我不确定你的记录器是如何实现的。您可能需要注入记录器工厂。或者,2。如果没有并行代码,则考虑用户为ThreadStatic。或TPL的CallContext.GetLogicalData。但它看起来有点混乱,特别是对于TPL,你需要保持一个上下文。