NLog中${onexception}布局渲染器无法正常显示含冒号的字面文本问题
问题根源
冒号:是NLog布局语法中的特殊字符,用来分隔同一渲染器下的多个参数。你之前的两种写法都因为冒号被识别为参数分隔符,导致文本被截断/解析失败:
- 第一种写法没有包裹文本,冒号被识别为
onexception渲染器的下一个参数起始位,导致整个inner参数解析错误,无内容输出 - 第二种写法加了literal但没处理冒号,冒号被识别为literal渲染器的下一个参数起始位,所以末尾冒号被截断
解决方案1(推荐):单引号包裹inner参数值
无需额外引入literal渲染器,直接用单引号包裹要输出的完整文本,内部的特殊字符就会被当做普通文本处理:
${onexception:inner='EXCEPTION THROWN:'}AppName Log Event
解决方案2:适配literal渲染器的写法
如果你的场景确实需要使用literal渲染器,给text参数值加单引号即可保留冒号:
${onexception:inner=${literal:text='EXCEPTION THROWN:'}}AppName Log Event
也可以用反斜杠转义冒号实现相同效果:
${onexception:inner=${literal:text=EXCEPTION THROWN\:}}AppName Log Event
内容的提问来源于stack exchange,提问作者Mike Corrente
相关产品推荐
相关产品推荐

