我一直在尝试使用Log4nets LogicalThreadContext为我的每个日志条目提供上下文.我的应用程序非常重视async/await,但是从阅读各种文章开始,LogicalThreadContext应该可以与.NET 4.5以后的异步代码一起正常工作.我正在使用.NET 4.5.1和log4net 2.0.3
我遇到了Stephen Cleary关于日志记录和.NET CallContext的一篇很棒的文章,结果我决定采用他的代码并使其适应log4net,试图看看我的代码中是否有错误可能有一直在引发这个问题.
首先,我完全按原样运行Stephens代码并得到预期的输出
Main 1: <SomeWork>
Main 1 A: <MoreWork>
Main 2: <SomeWork>
Main 2 A: <MoreWork>
Main 1 A: </MoreWork>
Main 1 B: <MoreWork>
Main 2 A: </MoreWork>
Main 2 B: <MoreWork>
Main 2 B: </MoreWork>
Main 2: </SomeWork>
Main 1 B: </MoreWork>
Main 1: </SomeWork>
Run Code Online (Sandbox Code Playgroud)
接下来,我修改了代码以使用log4net而不是Stephens自定义 MyStack
internal class Program
{
private static readonly ILog Log = LogManager.GetLogger(typeof(Program));
private const string StackName = "test";
private static void Main(string[] …Run Code Online (Sandbox Code Playgroud)