NLog WebServiceTarget:StackTrace null

时间:2018-12-06 16:16:31

标签: c# .net logging nlog

在将MailTarget与自定义LayoutRenderer一起使用时,我可以看到LogEventInfo.StackTrace包含可以包含在呈现的响应中的数据。 但是,将MailTarget替换为WebServiceTarget并使用相同的自定义LayoutRenderer LogEventInfo.StackTrace现在会返回null

两个目标都是“常规” NLog实现,使用相同的LayoutRenderer从相同的代码调用

其他人也遇到过同样的问题吗? WebServiceTarget是否有某些限制可以阻止捕获堆栈跟踪信息?

解决方案,基于以下Rolf的建议:

public sealed class MyLayoutRenderer : LayoutRenderer, IUsesStackTrace
{
    public StackTraceUsage StackTraceUsage => StackTraceUsage.Max; 

    ....
}

1 个答案:

答案 0 :(得分:1)

如果您使用的是诸如Ex之类的布局渲染器,则NLog仅捕获并提供目标的StackTrace。 ${callsite}

如果您有一个自定义的布局渲染器,则可以从NLog.Internal.IUsesStackTrace继承(并返回StackTraceUsage.Max