这是我的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中使用某些配置?
答案 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}.log
和logs\exceptions_${shortdate}.log
中(仅错误日志)