簡體   English   中英

將所有消息發送到一個日志文件,而RavenDB日志發送到另一日志文件

[英]Send ALL messages to one log file, and RavenDB logs to a different log file

這聽起來微不足道,但是我卻無法做到。 我有下面的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'中。 應該怎么做?

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

如果final="true"表示將不再執行Raven.*任何規則,則將執行您要問的事情(如果我理解正確的話)。

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

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

在您的情況下,這意味着在記錄與Raven相關的任何內容時,將使用第一個記錄器並停止流程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM