当布局渲染输出为空时,防止NLog渲染内部文本

时间:2014-01-27 19:11:43

标签: nlog

我将NLog错误电子邮件文本的内容放入文件中,并使用FileContents渲染器渲染它。我想做的是,如果布局渲染器生成空字符串

,则隐藏html输出的某些部分
<div>Request ticket: ${httpContextItems:key=RequestTicket}</div>

我不确定when condition/property的语法。以下是一些尝试:

${httpContextItems:key=RequestTicket:when:length>0}
   <div>Request ticket: ${httpContextItems:key=RequestTicket}</div>
${??? How to enclose? }

并且NLog不喜欢这种嵌套的东西:

${when:when=length(${httpContextItems:key=RequestTicket})=0:inner=<div>Request ticket: ${httpContextItems:key=RequestTicket}</div>}

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题并得到了这样的工作:

${when:when=length('${httpContextItems:key=RequestTicket}') > 0:inner=&lt;div&gt;Request ticket ${httpContextItems:key=RequestTicket}&lt;/div&gt;}

请注意,我必须在请求票证之后删除冒号。 NLog继续在冒号之前或之后剪切文本,无论我尝试了什么(使用\转义,使用$ {literal},用其ASCII代码替换冒号,将冒号放在单独的变量中......)。

答案 1 :(得分:1)

  

并且NLog不喜欢这种嵌套的东西:

${when:when=length(${httpContextItems:key=RequestTicket})=0:inner=<div>Request    ticket: ${httpContextItems:key=RequestTicket}</div>}

由于冒号,这是NLog中的一个错误。这应该从NLog 4.2开始工作,因此解决方案是升级NLog。见this issue on GitHub