2016-07-26 15 views
1

例外メッセージを現在のスレッドカルチャではなく英語で書くようにNLogを設定することはできますか?英語で例外メッセージを書き込むようにNLogを設定する

Exception messages in English?で提案されている現在のスレッドカルチャを切り替えることでこの問題を回避することは可能でしょうが、別の解決方法がある場合は実行したくありません。

私のロガーはNinject ILoggerとして公開されているので、それぞれのメソッドを実装してスレッドカルチャを変更することもできますが、別の解決策がある場合は、これを避けることもできます。

+1

にそのように使用することができます前に、それが登録されている必要があり

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; } } } } 

はGitHubの上でも参照してください:https://github.com/NLog/NLog/issues/172 – Julian

答えて

1

解決策が見つかりました。ジュリアンのおかげでgithub.com/NLog/NLog/issues/172を参照

例外が記録される前にカルチャを切り替えるカスタムWrapperLayoutRendererを書くことができます。どのロガーが

ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition("InvariantCulture", typeof(InvariantCultureLayoutRendererWrapper)); 

を作成し、コンフィグ

layout="${longdate}|${level:uppercase=true}|${logger}|${message}|${InvariantCulture:${exception:format=tostring}}" 
関連する問題