NLog WebServiceTarget:StackTrace 为空

NLog WebServiceTarget: StackTrace null

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

两个目标都是 "stock" NLog 实现,正在使用相同的 LayoutRenderer

从相同的代码调用

有没有其他人遇到过同样的问题? WebServiceTarget 是否存在某些阻止堆栈跟踪被捕获的限制?

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

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

    ....
}

如果您使用像 Ex 这样的布局渲染器,NLog 只会为目标捕获并提供 StackTrace。 ${callsite}.

如果您有自定义布局渲染器,那么您可以继承自 NLog.Internal.IUsesStackTrace(以及 return StackTraceUsage.Max