gpt4 book ai didi

nlog - 如何在 NLog 布局模式中选择某个部分?

转载 作者:行者123 更新时间:2023-12-04 18:44:40 27 4
gpt4 key购买 nike

我有一个名为 的自定义布局渲染器工作 .它提供了几个项目,它们在我们的 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>

当布局渲染器确定没有可用的作业特定数据时,日志消息将包含字符串 [H: S: NS: N:'' K: S:] .我想排除它。

所以,我试图替换 ${jobLayout}${jobLayout:when=jobName!=’’} ,但它不起作用,因为NLog认为 jobLayout应该对应一个布局渲染器,而不是一个变量,这里就是这种情况。

如何更改我的布局,以便 ${jobLayout}仅在 ${jobName} 时才包括在内是不是空的?

最佳答案

我遇到了类似的问题,我想在变量不为空时显示一些特殊格式。

我从 Most useful NLog configurations 中获得了一些灵感
${when:when=length('${jobName}') > 0:inner=${jobLayout}}

我不确定这是否会让你 100% 到达那里,但这是朝着正确方向迈出的一步。

关于nlog - 如何在 NLog 布局模式中选择某个部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17220988/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com