我有一个基于插件的系统,使用。净任务(<>/第三方物流大力开展并行工作流程。Worker是执行各种类型任务的插件,在主处理应用程序之外构建,编译为DLL并放入插件目录。
工作者插件将使用跟踪消息输出他们正在做的事情。我希望用仅在父应用程序中已知的其他上下文信息来补充这些跟踪消息。这也意味着我需要以某种方式找出跟踪消息来自什么上下文(它来自哪个任务)
我知道我可以将日志实现传递给插件,但之后我必须重新编写所有预期的插件,并使用该日志实现。
有没有办法做到这一点?
根据barakcaf的建议,我调查了 CallContext 这解决了我的问题。
CallContext
例子:
public async Task TopFunction(string someContextualData) { CallContext.LogicalSetData("MyVar", someContextualData); await ChildFunction(); } public async Task ChildFunction() { string someContextualData = (string)CallContext.LogicalGetData("MyVar"); }