2017-06-29 5 views
1

Ich versuche, 2-Logger zu erstellen (mit NLog)Generisches Logging und spezifische Protokollierung (mit NLOG), Vervielfältigung von Logging

  1. Erste Logger protokolliert alle das gewünschte Element in der Lösung
  2. Die andere einzuloggen eine Spur bestimmte Elemente (ich es tue Dinge sauber zu halten und konzentriert, und führe nur trace hier)

Im Folgenden ist die Konfiguration

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<targets> 
    <target name="logfile" 
      xsi:type="File" 
      layout="${longdate} ${level} ${threadid} ${callsite} ${message}" 
      fileName="${basedir}\Logs\GatewayApplicationDebugAndErrorLog.txt" 
      archiveNumbering="Rolling" 
      maxArchiveFiles="10" 
      archiveAboveSize="10000000"/>  
    <target name="J1939Trace" 
      xsi:type="File" 
      layout="${longdate} ${level} ${threadid} ${callsite} ${message}" 
      fileName="${basedir}\Logs\J1939Trace.txt" 
      archiveNumbering="Rolling" 
      maxArchiveFiles="10" 
      archiveAboveSize="10000000"/> 
</targets> 
<rules> 
    <logger name="*" minlevel="Trace" writeTo="logfile" /> 
    <logger name="J1939Trace" maxlevel="Trace" writeTo="J1939Trace" final="true" /> 
</rules> 
Was ich beobachte ist, dass die spezifischen Logger Artikel auch in generischem Protokollpunkt angemeldet ist, und ich will nicht, dass die Vervielfältigung

und Nutzung ist unter

private readonly Logger logger = LogManager.GetCurrentClassLogger(); // Generic Logger 
private readonly Logger j1939Logger = LogManager.GetLogger("J1939Trace"); // Specific Logger. 

gezeigt. Irgendwelche Ideen was mache ich falsch?

+0

Ist die Absicht, dass das eine Protokoll Trace ist und das andere Protokoll über Trace ist? Könnten Sie den generischen Logger einfach so ändern, dass er debuggt? – Derek

+0

@derek Das ist nicht die Absicht. Die Absicht ist, alles zu protokollieren, außer das, was in einem bestimmten Logger eingeloggt ist. –

Antwort

1

Funktioniert das?

Von: NLog: How to exclude specific loggers from a specific rule?

Hinzufügen final = „true“ bedeutet, dass keine weiteren Regeln für die von „SpammyLogger“ erzeugt Ereignisse ausgeführt werden, aber es bezieht sich nur auf die vorgegebenen Werte (siehe https://github.com/nlog/nlog/wiki/Configuration-file#rules)

.

Lesen Sie alle Kommentare in der Antwort durch.

+1

das funktioniert, die Reihenfolge ist wichtig! Das habe ich nicht gesehen. –