我有一个名为job的自定义布局渲染器.它提供了几个项目,在我们的app.config中使用如下:
<variable name="jobHost" value = "${job:item=host}" />
<variable name="jobService" value = "${job:item=service}" />
<variable name="jobNS" value = "${job:item=ns}" />
<variable name="jobName" value = "${job:item=name}" />
<variable name="jobKind" value = "${job:item=kind}" />
<variable name="jobScheduleId" value = "${job:item=scheduleId}" />
<variable name="jobLayout" value = "[H:${jobHost} S:${jobService} NS:${jobNS} N:'${jobName}' K:${jobKind} S:${jobScheduleId}]" />
<variable name="layout" value = "${longdate} [${threadid}] ${machinename} ${jobLayout} ${uppercase:inner=${level}} ${logger} - ${message} ${onexception:${newline}${exception:format=ToString:innerFormat=ToString:maxInnerExceptionLevel=2}}" />
<targets>
<target name="ThreadLog" xsi:type="ThreadSpecificTarget" />
<target xsi:type="SplitGroup" name="AllTargets">
<target name="TextFile" xsi:type="File" fileName="C:\Log\QuartzBackgroundEngine.txt" layout="${layout}"/>
<target name="Console" xsi:type="ColoredConsole" layout="${layout}"/>
</target>
</targets>
Run Code Online (Sandbox Code Playgroud)
当布局渲染器确定没有可用的作业特定数据时,日志消息包含该字符串[H: S: NS: N:'' K: S:].我想排除它.
所以,我试图取代${jobLayout}有${jobLayout:when=jobName!=’’},但它不工作,因为NLOG认为,jobLayout应该对应一个布局的渲染器,而不是一个变量,它是这里的情况.
如何更改布局,以便${jobLayout}仅在${jobName}不为空的情况下才包含?
我遇到了类似的问题,我想在变量不为空时显示一些特殊的格式。
${when:when=length('${jobName}') > 0:inner=${jobLayout}}
我不确定这是否能让你 100% 达到目标,但这是朝着正确方向迈出的一步。
| 归档时间: |
|
| 查看次数: |
1789 次 |
| 最近记录: |