将所有消息发送到一个日志文件,RavenDB将日志记录到另一个日志文件

时间:2013-04-20 17:31:48

标签: c# logging nlog

这听起来微不足道,但我无法做到这一点。我有以下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'中。该怎么做?

2 个答案:

答案 0 :(得分:1)

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

final="true"意味着不会执行Raven.*的更多规则将执行您所要求的(如果我理解正确的话)。

答案 1 :(得分:-1)

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

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

在你的情况下,这意味着当记录任何与Raven相关的东西时,将使用第一个记录器并停止流动。