Tôi có trình kết xuất bố cục tùy chỉnh có tên job. Nó cung cấp một số mặt hàng, được sử dụng như thế này trong app.config của chúng tôi:Làm thế nào để tạo một phần nhất định tùy chọn trong mẫu bố cục NLog?
<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>
Khi các renderer bố trí quyết định rằng không có công việc dữ liệu cụ thể có sẵn, sau đó đăng nhập thông điệp chứa chuỗi [H: S: NS: N:'' K: S:]
. Tôi muốn loại trừ nó. Vì vậy, tôi đã cố gắng thay thế ${jobLayout}
bằng ${jobLayout:when=jobName!=’’}
, nhưng nó không hoạt động, bởi vì NLog nghĩ rằng jobLayout
phải tương ứng với trình kết xuất bố cục, thay vì một biến, đó là trường hợp ở đây.
Tôi làm cách nào để thay đổi bố cục để ${jobLayout}
chỉ được bao gồm nếu ${jobName}
không trống?