使用NLog记录方法名称和参数

时间:2012-09-19 10:54:07

标签: .net nlog

如何使用NLog使用其传入参数记录调用方法?如果不可能,我可以将一些参数传递给记录器,以便它们出现在最终的日志消息中吗?

2 个答案:

答案 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的额外参数。之后构建自己的消息。您也可以使用它: