Action
を使用して並行して実行したい一連のがありParallel.Invoke
ます。しかし、それぞれについてAction
、log4net によって作成された個別のログ ファイルが必要です。私のlog4net構成ファイルでは、これを追加しました:
<file type="log4net.Util.PatternString" value="3S2M3_%property{UniqueIdentifier}.log" />
実行するアクションが 1 つしかない場合、これは正常に機能します。ログ ファイルには正しいファイル名が含まれています。
ただし、実行するエントリが複数ある場合は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)
作成されるログ ファイルは、プロパティに割り当てられた値の 1 つを使用していUniqueIdentifier
ます。この値がどのように選択されるかわかりません。常に最初または最後であるとは限りません。上記の例では、ファイルのみ3S2M3_0004.log
が作成され、すべてのログ エントリが含まれています。
LogicalThreadContext と ThreadContext の両方を試しましたが、違いはありません。