【发布时间】:2015-02-22 20:26:01
【问题描述】:
我有两个 dll。两者都在使用 log4Net 和 log。
第一个 Dll 'A.dll' 有一个异步函数,可以并行记录,并且每个调用都有一个唯一的 ID。 此函数正在使用第二个 dll 'B.dll' 也记录。
logger.Log("Is about to enter B function");
B.somefucntion();
问题是我有多个来自“A.dll”和“B.dll”的日志,我无法在它们之间建立连接。
我无法将函数的唯一 ID 发送到“B.dll”(这是我无法修改的外部 dll)。
我想到了一个解决方案,其中在“A.dll”中打开一个范围,并且此范围之间的每个日志都将添加到此范围下+它的消息。
logger.Log("Is about to enter B function");
using (logger.Scope("Bla bla " + id))
{
B.somefucntion();
}
然后在“B.dll”中出现的每个日志都将以“Bla bla + {id}”开头。 我已经实现了它并且它正在工作。
这个解决方案的问题是它不是线程安全的,所以多个线程可以一起改变当前的作用域。因此范围作为没有意义。
您知道另一种解决方案,已经实施/我需要实施吗?
非常感谢。
【问题讨论】:
-
@dotctor 不必要的评论,问题非常清楚。但是感谢社区的编辑,非常感谢。
标签: c# multithreading logging