NLogを使用して着信パラメータを使用して呼び出しメソッドをログに記録するにはどうすればよいですか?それが不可能な場合:最終的なログメッセージに表示されるように、いくつかのパラメーターをロガーに渡すことはできますか?
2 に答える
NLogを使用すると、LogEventを使用して追加のコンテキストをキャプチャできます。
Logger logger = LogManager.GetCurrentClassLogger();
LogEventInfo theEvent = new LogEventInfo(LogLevel.Debug, null, "Pass my custom value");
theEvent.Properties["MyValue"] = "My custom string";
theEvent.Properties["MyDateTimeValue"] = new DateTime(2015, 08, 30, 11, 26, 50);
theEvent.Properties["MyDateTimeValueWithCulture"] = new DateTime(2015, 08, 30, 11, 26, 50);
theEvent.Properties["MyDateTimeValueWithCultureAndFormat"] = new DateTime(2015, 08, 30, 11, 26, 50);
logger.Log(theEvent);
その後、を使用して抽出できます${all-event-properties}
参照:https ://github.com/NLog/NLog/wiki/EventProperties-Layout-Renderer
参照:https ://github.com/NLog/NLog/wiki/All-Event-Properties-Layout-Renderer
パラメータとして独自のlog-methodを作成することにより、method-nameを自動的にキャプチャでき[System.Runtime.CompilerServices.CallerMemberName] methodName
ます。参照:https ://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.callermembernameattribute
また、を使用LogManager.GetCurrentClassLogger()
してクラスのロガーを取得する場合は、を使用${logger}
してクラス名をレンダリングできます。
これを解決する方法の1つ-NLogロガークラスの下にカスタムラッパーを作成します。これは、classNameやmethodNameなどの追加のパラメーターを取ります。その後、自分でメッセージを作成します。これも使用できます: