Поддерживается ли цепочка логгеров в NLog через конфигурацию без изменения кода? - PullRequest
0 голосов
/ 27 июня 2019

вот конфигурация моего nlog:

<targets async="true">
    <target name="console" xsi:type="ColoredConsole" useDefaultRowHighlightingRules="false" layout="${date:format=MMM dd, yyyy hh\:mm\:ss.ff tt} | ${level} ${message}" >
    </target>

    <target xsi:type="File" name="app" fileName="logs\quantum_${shortdate}.log"
            layout="${date:universalTime=True:format=MMM dd, yyyy hh\:mm\:ss.ff tt} | ${event-properties:item=EventId_Id} ${uppercase:${level}} | ${message} ${exception:format=message}" />

    <target xsi:type="File" name="errors" fileName="logs\exceptions_${shortdate}.log"
            layout="${date:universalTime=True:format=MMM dd, yyyy hh\:mm\:ss.ff tt} | ${event-properties:item=EventId_Id} ${uppercase:${level}} | ${message} ${exception:format=tostring}" />

    <target xsi:type="File" name="aspcore" fileName="logs\aspcore_${shortdate}.log"
            layout="${date:universalTime=True:format=MMM dd, yyyy hh\:mm\:ss.ff tt} | ${event-properties:item=EventId_Id} | ${uppercase:${level}} | ${message} ${exception:format=tostring} | url: ${aspnet-request-url} | action: ${aspnet-mvc-action}" />
</targets>

<rules>
    <logger name="app" minlevel="Trace" writeTo="app,console" />
    <logger name ="appErrors" minlevel="Error" writeTo="errors" />
    <logger name="Microsoft.*" maxLevel="Error" writeTo="aspcore"/> 
</rules>

Теперь я хочу связать регистраторы без изменения кода в зависимости от условия.Так что я регистрируюсь в app , но при наличии исключения, app должно передать его в appErrors , которое может фактически записать полное исключение.

, поэтому в конце приложение содержит только сообщения даже об исключениях.в то время как appError будет содержать сведения обо всех возникших исключениях.Возможно ли использовать какую-то конфигурацию в nlog?

1 Ответ

2 голосов
/ 27 июня 2019

Похоже, вы уже получили это.Я не понимаю, что должен делать appErrors, но вы могли бы сделать так:

<rules>
    <logger name="app" minlevel="Trace" writeTo="app,console" />
    <logger name="app" minlevel="Error" writeTo="errors" />
    <logger name="Microsoft.*" maxLevel="Error" writeTo="aspcore"/> 
</rules>

, чтобы все журналы из приложения с LogLevel> = Error были и в logs\quantum_${shortdate}.log, и (только в журналах ошибок) в logs\exceptions_${shortdate}.log

...