2016-04-12 5 views
5

Ich habe die folgenden Logger konfiguriert.So konfigurieren Sie NLog, um nur von einem bestimmten Level für einen Logger-Namespace für * alle * Ziele zu protokollieren

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <targets> 
    <target name="file" xsi:type="File" fileName="trace.log"/> 
    <target name="trace" xsi:type="OutputDebugString"/> 
    <target name="console" xsi:type="ColoredConsole" /> 
    </targets> 
    <rules> 
     <logger name="*" minlevel="Info" writeTo="file" /> 
     <logger name="*" minlevel="Info" writeTo="trace" /> 
     <logger name="*" minlevel="Info" writeTo="console" /> 
    </rules> 
</nlog> 

Ich will alles für Komponente. * nur von eingeloggt sein für alle Logger WARN und höher. Mit NHibernate ist dies einfach:

<logger name="NHibernate.SQL"> 
    <level value="OFF"/> 
</logger> 

Ich habe versucht, die folgenden hinzuzufügen:

<logger name="Component.*" minlevel="Warn" final="true" /> 

Das funktioniert nicht.

So protokollieren Sie nur von einem bestimmten Level für einen Logger-Namespace für alle Ziele.

Antwort

3

Die Lösung lautet:

<logger name="Component.*" maxlevel="Info" final="true" /> 

Sie grundsätzlich sagen, für Logger (e) X ich alle Log-Einträge überspringen wollen, die Informationen oder niedriger als dieses Spiel hat nicht die writeTo Attribut.

Es wird hier dokumentiert:

https://github.com/nlog/NLog/wiki/Configuration-file

Mit der Probe:

<logger name="Name.Space.*" minlevel="Debug" maxlevel="Error" final="true" /> 
+0

Ich ziehe den logischen log4net Ansatz .... –