是否在不更改代码的情况下通过配置支持NLog中Logger的链接?

时间:2019-06-27 12:42:01

标签: c# asp.net nlog

这是我的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 个答案:

答案 0 :(得分:2)

您似乎已经知道了。我不知道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}.loglogs\exceptions_${shortdate}.log中(仅错误日志)