0

这听起来微不足道,但我不知何故无法做到。我有以下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”。这应该怎么做?

4

2 回答 2

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

Wherefinal="true"意味着不再Raven.*执行规则将按照您的要求执行(如果我理解正确的话)。

于 2013-04-21T00:14:27.427 回答
-1

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

原因是记录器是从上到下评估的,将使用第一个匹配的,并且不会评估下面的。

在您的情况下,这意味着在记录与 Raven 相关的任何内容时,将使用第一个记录器并停止流。

于 2013-04-21T11:17:03.977 回答