JSON-config 中的 NLog 默认包装器用法
NLog default wrapper usage in JSON-config
Sometimes we require ALL targets to be wrapped in the same way, for example to add buffering and/or retrying. NLog provides <default-wrapper />
syntax for that. You simply put this element in the <targets />
section and all your targets will be automatically wrapped with the specified wrapper.
它还提供了以下示例:
<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
怎么办?
是的,有一些关于 XML-config 和 JSON-config 是否应该完全一对一的讨论。另见:https://github.com/NLog/NLog.Extensions.Logging/pull/283
因为 JSON-config 将目标部分表示为已知目标名称的字典,所以将 default-wrapper
和 default-target-parameters
作为保留魔术并不自然-字符串。
- 正如您从文档中发现的那样,它们已移出目标部分。
- 是的,当使用
default-wrapper
时,目标部分中的所有项目都将被换行。
- 尚未测试如果将
default-wrapper
和 default-target-parameters
放在目标部分字典中会发生什么。也许检查 NLog InternalLogger 是否抱怨未知配置项。
请注意,正在做更多的工作来为 default-wrapper
和 default-target-parameters
取一个更好的名字,因为可能不容易猜到它们都适用于目标部分。另见:https://github.com/NLog/NLog.Extensions.Logging/pull/500
Sometimes we require ALL targets to be wrapped in the same way, for example to add buffering and/or retrying. NLog provides
<default-wrapper />
syntax for that. You simply put this element in the<targets />
section and all your targets will be automatically wrapped with the specified wrapper.
它还提供了以下示例:
<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
怎么办?
是的,有一些关于 XML-config 和 JSON-config 是否应该完全一对一的讨论。另见:https://github.com/NLog/NLog.Extensions.Logging/pull/283
因为 JSON-config 将目标部分表示为已知目标名称的字典,所以将 default-wrapper
和 default-target-parameters
作为保留魔术并不自然-字符串。
- 正如您从文档中发现的那样,它们已移出目标部分。
- 是的,当使用
default-wrapper
时,目标部分中的所有项目都将被换行。 - 尚未测试如果将
default-wrapper
和default-target-parameters
放在目标部分字典中会发生什么。也许检查 NLog InternalLogger 是否抱怨未知配置项。
请注意,正在做更多的工作来为 default-wrapper
和 default-target-parameters
取一个更好的名字,因为可能不容易猜到它们都适用于目标部分。另见:https://github.com/NLog/NLog.Extensions.Logging/pull/500