【问题标题】:Read from Nlog config?从 Nlog 配置中读取?
【发布时间】:2020-04-15 22:25:38
【问题描述】:

我在配置文件中有以下 NLOG 目标:

<target xsi:type="File" name="communicationTarget" fileName="${basedir}/logs/${shortdate}.log">
      <layout xsi:type="JsonLayout" includeAllProperties="true" maxRecursionLimit="10">
        <attribute name="message" layout="${message}" />
      </layout>
    </target>

有没有办法从 C# 代码中读取 maxRecursionLimit?

这些我都试过了:

LogManager.Configuration.AllTargets.Where(c => c.Name == "communicationTarget").FirstOrDefault();
LogManager.Configuration.FindTargetByName<FileTarget>("communicationTarget");

目前没有找到 maxRecursionLimit。

【问题讨论】:

    标签: c# config nlog


    【解决方案1】:

    可能是这样的:

    var myTarget = LogManager.Configuration.FindTargetByName("communicationTarget");
    var myTarget = ((myTarget as NLog.Targets.Wrappers.WrapperTargetBase)?.WrappedTarget) ?? myTarget;
    var jsonLayout = (myTarget as NLog.Targets.TargetWithLayout)?.Layout as NLog.Layouts.JsonLayout;
    var maxRecursionLimit = jsonLayout?.MaxRecursionLimit;
    

    这也将处理您应该激活&lt;targets async="true"&gt;

    附:没试过编译代码:)

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多