这听起来微不足道,但我无法做到这一点。我有以下NLog.config
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" throwExceptions="true">
<variable name="logDirectory" value="${basedir}/App_Data/logs"/>
<targets>
<target name="file" xsi:type="AsyncWrapper">
<target xsi:type="File" name="f1" fileName="${logDirectory}\log1.txt" layout="${longdate} ${callsite} ${level} ${message} (File 1)"/>
</target>
<target xsi:type="File" name="fileGeneral" fileName="${logDirectory}\log_${shortdate}.txt" >
<layout xsi:type="Log4JXmlEventLayout"/>
</target>
<target xsi:type="File" name="fileRaven" fileName="${logDirectory}\raven_${shortdate}.txt" >
<layout xsi:type="Log4JXmlEventLayout"/>
</target>
</targets>
<rules>
<logger name="Raven.*" minlevel="Trace" writeTo="fileRaven"></logger>
<logger name="*" minlevel="Trace" writeTo="fileGeneral"></logger>
</rules>
</nlog>
这最终将Raven + ALL日志改为'log_ [date] .txt',另一个只是RavenDB的副本记录在'raven_ [date] .txt'中。该怎么做?
答案 0 :(得分:1)
<logger name="Raven.*" minlevel="Trace" writeTo="fileRaven" final="true"></logger>
final="true"
意味着不会执行Raven.*
的更多规则将执行您所要求的(如果我理解正确的话)。
答案 1 :(得分:-1)
不幸的是,这是不可能的。
原因是记录器从上到下进行评估,第一个匹配将被使用,下面的评估将不会被评估。
在你的情况下,这意味着当记录任何与Raven相关的东西时,将使用第一个记录器并停止流动。