Читать из конфига Nlog? - PullRequest
       22

Читать из конфига Nlog?

0 голосов
/ 15 апреля 2020

У меня есть следующая цель 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>

Есть ли способ прочитать maxRecursionLimit из C# кода?

Я пробовал это:

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

Пока не найден maxRecursionLimit.

1 Ответ

0 голосов
/ 15 апреля 2020

Может быть, что-то вроде этого:

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;

Это также поможет вам активировать <targets async="true">.

PS Не пытался скомпилировать код:)

...