2013-04-20 49 views
0

這聽起來微不足道,但我無法設法做到這一點。我有以下NLog.config發送所有消息到一個日誌文件,並且RavenDB登錄到另一個日誌文件

<?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> 

這與掠奪+ ALL日誌「LOG_ [日期]的.txt」,並在「raven_ [日期]的.txt」只是RavenDB日誌的另一個副本結束了。這應該怎麼做?

回答

1
<logger name="Raven.*" minlevel="Trace" writeTo="fileRaven" final="true"></logger> 

final="true"意味着Raven.*沒有規則將被執行會做你的要求(如果我理解正確的你)。

+0

只要Raven *記錄器出現在*記錄器之上,它應該沒有區別 – Xharze 2013-04-21 11:14:37

-1

不幸的是,這是不可能的。

原因是記錄器是從上到下評估的,第一個匹配將被使用,下面的不會被評估。

在你的情況下,這意味着當記錄Raven相關的任何事情時,第一個記錄器將被使用並停止流動。

+0

是的,根據答案是可能的。現在看到它,這很有道理,因爲我可能想要將Raven查詢記錄到文件中,並且要追蹤包括Raven在內的所有內容。這樣,兩者都是可能的。 – 2013-04-22 14:08:16

相關問題