C# NLog WebServiceTarget:StackTrace null

C# NLog WebServiceTarget:StackTrace null,c#,.net,logging,nlog,C#,.net,Logging,Nlog,当将MailTarget与自定义LayoutRenderer一起使用时,我可以看到LogEventInfo.StackTrace包含的数据随后可以包含在呈现的响应中。 但是,将MailTarget替换为WebServiceTarget,并使用相同的自定义LayoutRendererLogEventInfo.StackTrace现在返回null 这两个目标都是“库存”NLog实现,使用相同的LayoutRenderer从相同的代码调用 还有其他人经历过同样的问题吗?WebServiceTarget

当将
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; 

    ....
}

如果您使用的是像Ex.
${callsite}
这样的layoutrenderer,则NLog仅捕获并提供目标的StackTrace

如果您有自定义布局渲染器,则可以从
NLog.Internal.iusestacktrace
(并返回
StackTraceUsage.Max