How*_*amp 2 .net c# logging nlog
我正在使用这个扩展NLog的https://github.com/NLog/NLog/tree/master/examples/ExtendingLoggers/LoggerWrapper方法,以便我可以为我的事件添加自定义属性.所以我的代码看起来像这样:
public void WriteMessage(string eventID, string message)
{
LogEventInfo logEvent = new LogEventInfo(LogLevel.Info, _logger.Name, message);
logEvent.Properties["EventID"] = eventID;
_logger.Log(typeof(MyLogger), logEvent);
}
Run Code Online (Sandbox Code Playgroud)
在WriteMessage方法中,我尝试获取调用者类和方法名称,如下所示:
logEvent.CallerClassName;
logEvent.CallerMemberName;
Run Code Online (Sandbox Code Playgroud)
但两者都返回null.
我怎样才能获得价值?
就像你可以分配LogEventInfo.Exception那样你也可以分配LogEventInfo.CallerClassName(或LogEventInfo.CallerMemberName).
调用getter LogEventInfo.Exception只会返回一个异常对象(如果已分配).这同样适用于LogEventInfo.CallerClassName(或LogEventInfo.CallerMemberName)
NLog Logger负责捕获呼叫站点.该Logger执行接收到当捕获LogEventInfo.捕获非常昂贵,只有在目标已配置为使用callsite时才会发生.
而不是试图自己走StackTrace.然后你可能想要使用来电者信息:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/caller-information
NLog正致力于通过使用呼叫者信息来改善呼叫站点的性能.请参阅https://github.com/NLog/NLog/pull/2527
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |