【发布时间】:2021-07-27 05:30:33
【问题描述】:
有时我们要求所有目标都以相同的方式包装,例如添加缓冲和/或重试。 NLog 为此提供了
<default-wrapper />语法。您只需将此元素放在<targets />部分中,您的所有目标都会自动使用指定的包装器进行包装。
它还提供了以下示例:
<nlog>
<targets>
<default-wrapper xsi:type="BufferingWrapper" bufferSize="100"/>
<target name="f1" xsi:type="File" fileName="f1.txt"/>
<target name="f2" xsi:type="File" fileName="f2.txt"/>
</targets>
<targets>
<default-wrapper xsi:type="AsyncWrapper">
<wrapper-target xsi:type="RetryingWrapper"/>
</default-wrapper>
<target name="n1" xsi:type="Network" address="tcp://localhost:4001"/>
<target name="n2" xsi:type="Network" address="tcp://localhost:4002"/>
<target name="n3" xsi:type="Network" address="tcp://localhost:4003"/>
</targets>
</nlog>
因此,<default-wrapper /> 元素应该是 <targets> 的子元素,以应用于同一父元素中的每个 <target>。
另一方面,Extended Json NLog Config Example 在与targets 元素相同的级别上使用default-wrapper:
"default-wrapper": {
"type": "AsyncWrapper",
"overflowAction": "Block"
},
"targets": {
所以,我有以下问题:
- Extended Json NLog Config Example 正确吗?
- 是否所有来自
targets元素的目标都用default-wrapper包裹,放在targets之外? - 如果在同一配置文件中的
targets中存在default-wrapper和targets之外的default-wrapper怎么办?
【问题讨论】: