我有一系列Action
我想使用Parallel.Invoke
. 但是对于每一个Action
我都希望有一个由 log4net 创建的单独的日志文件。在我的 log4net 配置文件中,我添加了这个:
<file type="log4net.Util.PatternString" value="3S2M3_%property{UniqueIdentifier}.log" />
如果只有一个 Action 可以执行此操作,则可以正常工作:日志文件具有正确的文件名。
Action
但是,如果要执行的日志不止一个,那么所有日志条目都会在同一个日志文件中结束。
创建的代码Action
是这样的:
Dim lstActions(4) As Action
Dim iCount As Integer = 0
For iCount = 0 To 4
Dim sUniqueIdentifier As String = iCount.ToString("D4")
Dim aOrderTask As Action = Sub()
log4net.LogicalThreadContext.Properties("UniqueIdentifier") = sUniqueIdentifier
' Some process that takes some time to complete
End Sub
lstActions(iCount) = aOrderTask
Next
Parallel.Invoke(lstActions)
创建的日志文件使用分配给UniqueIdentifier
属性的值之一。我无法弄清楚这个值是如何被挑选出来的:它并不总是第一个或最后一个。在上面的示例中,仅创建了文件3S2M3_0004.log
并且它包含所有日志条目。
我已经尝试过 LogicalThreadContext 和 ThreadContext 并且没有区别。