【问题标题】:NLog default wrapper usage in JSON-configJSON-config 中的 NLog 默认包装器使用
【发布时间】:2021-07-27 05:30:33
【问题描述】:

Documentation 说:

有时我们要求所有目标都以相同的方式包装,例如添加缓冲和/或重试。 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>

因此,&lt;default-wrapper /&gt; 元素应该是 &lt;targets&gt; 的子元素,以应用于同一父元素中的每个 &lt;target&gt;。

另一方面,Extended Json NLog Config Example 在与targets 元素相同的级别上使用default-wrapper:

"default-wrapper": {
    "type": "AsyncWrapper",
    "overflowAction": "Block"
},
"targets": {

所以,我有以下问题:

  1. Extended Json NLog Config Example 正确吗?
  2. 是否所有来自targets 元素的目标都用default-wrapper 包裹,放在targets 之外?
  3. 如果在同一配置文件中的targets 中存在default-wrapper 和targets 之外的default-wrapper 怎么办?

【问题讨论】:

    标签: c# nlog


    【解决方案1】:

    是的,有一些关于 XML-config 和 JSON-config 是否应该完全一对一的讨论。另见:https://github.com/NLog/NLog.Extensions.Logging/pull/283

    因为 JSON-config 将 targets-section 表示为已知目标名称的字典,所以将 default-wrapper 和 default-target-parameters 作为保留的魔法字符串感觉不自然。

    1. 正如您从文档中发现的那样,它们已移出目标部分。
    2. 是的,使用 default-wrapper 时,目标部分中的所有项目都将被包装。
    3. 尚未测试如果将default-wrapper 和default-target-parameters 放在targets-section-dictionary 中会发生什么。也许检查NLog InternalLogger 是否抱怨未知的配置项。

    请注意,正在做更多的工作来给 default-wrapper 和 default-target-parameters 一个更好的名称,因为可能不容易猜到它们都适用于目标部分。另见:https://github.com/NLog/NLog.Extensions.Logging/pull/500

    【讨论】:

      猜你喜欢
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-08
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多