如何使用NLog记录调用方法及其传入参数?如果不可能,我能否将一些参数传递给日志记录器,以便它们出现在最终的日志消息中?
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
通过创建自己的日志方法并将[System.Runtime.CompilerServices.CallerMemberName] methodName
作为参数,可以自动捕获方法名称。另见:https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.callermembernameattribute
如果使用LogManager.GetCurrentClassLogger()
获取类的记录器,则可以使用${logger}
来呈现类名。
NLog v5引入了一个新的流畅的Logger API,它以最小的开销捕获源文件+行号+类名,可与${callsite:captureStackTrace=false}一起使用:
_logger.ForInfoEvent()
.Message("This is a fluent message {0}", "test")
.Property("PropertyName", "PropertyValue")
.Log();