如何使用NLog使用其传入参数记录调用方法?如果不可能,我可以将一些参数传递给记录器,以便它们出现在最终的日志消息中吗?
答案 0 :(得分:1)
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
您可以通过使用[System.Runtime.CompilerServices.CallerMemberName] methodName
作为参数创建自己的日志方法来自动捕获方法名称。另请参阅:https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.callermembernameattribute
如果使用LogManager.GetCurrentClassLogger()
来获取该类的记录器,则可以使用${logger}
来呈现类名。
答案 1 :(得分:0)
解决此问题的方法之一 - 在NLog记录器类下创建自定义包装器,它将采用类似className和methodName的额外参数。之后构建自己的消息。您也可以使用它: