Íls*_*zan 5 .net c# log4net multithreading task
有没有人试图堆叠上下文并同时使用任务?
我正在尝试这样的事情:
using (log4net.ThreadContext.Stacks["contextLog"].Push("Saving Data"))
{
log.Info("Starting transaction");
var taskList = new List<Task>();
taskList.Add(Task.Factory.StartNew(() =>
{
log.Info("Inside Transaction");
}));
Task.WaitAll(taskList.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
我得到了那个结果:
2015/42/26 13:42:10,841 INFO [Saving Data] Starting transaction
2015/42/26 13:42:10,870 INFO [(null)] Inside Transaction
Run Code Online (Sandbox Code Playgroud)
我希望它 在第二行有[保存数据]而不是[(null)].
一旦启动新任务,它似乎就失去了对log4net ThreadContext Stack的访问权限.
你知道怎么避免这个吗?
编辑:起初o认为是交易范围的问题,但正如@stuartd指出的那样,它工作正常.然后我意识到有一个任务,这是真正的问题.
该任务将在不同的线程上运行,因此堆栈中的数据ThreadContext
不可用,您应该使用log4net.LogicalThreadContext
代替 作为数据应该遵循逻辑执行并且仍然对任务可见Task
归档时间: |
|
查看次数: |
390 次 |
最近记录: |