私はいくつかの助けを借りて解決策を見つけました。Julian のおかげでgithub.com/NLog/NLog/issues/172を参照してください
例外がログに記録される前にカルチャを切り替えるカスタム WrapperLayoutRenderer を作成することができます。
namespace NLog.LayoutRenderers.Wrappers
{
[LayoutRenderer("InvariantCulture")]
[ThreadAgnostic]
public sealed class InvariantCultureLayoutRendererWrapper : WrapperLayoutRendererBase
{
protected override string Transform(string text)
{
return text;
}
protected override string RenderInner(LogEventInfo logEvent)
{
var currentCulture = Thread.CurrentThread.CurrentUICulture;
try
{
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
return base.RenderInner(logEvent);
}
finally
{
Thread.CurrentThread.CurrentUICulture = currentCulture;
}
}
}
}
ロガーを作成する前に登録する必要があります
ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("InvariantCulture", typeof(InvariantCultureLayoutRendererWrapper));
そして、設定でそのように使用できます
layout="${longdate}|${level:uppercase=true}|${logger}|${message}|${InvariantCulture:${exception:format=tostring}}"