2016-08-08 25 views
1

Ich habe gegoogelt aber noch keine Antwort auf meine Frage gefunden. Ich habe meine Anwendung und ich habe eine Client-Bibliothek, die mich mit einer Datenbank verbindet (in meinem Fall ist es RavenDb).
Ich möchte RavenDb Client-Nachrichten in eine separate Datei (dh alle Nachrichten von Klassen Instanzen von Raven.Client.Xyz sollten in Raven-Client.log-Datei protokolliert werden - Aktionen, die Client-Bibliothek führt, z. B. zu verbinden Server, Warten auf Antwort, Dokumente erhalten/aktualisieren, Index abfragen usw., nicht was mein Code mit einer Client-Bibliothek interagiert). Wie kann ich das erreichen? Ich habe versucht, separate Appender, aber dann RavenDb Protokolle erscheinen auch in meiner Anwendung Logger.
Ich verwende XML-Konfiguration und log4net Version ist 1.2.10log4net - separater Appender für einen Namensraum

Antwort

0

Sie waren auf dem richtigen Weg. Erstellen Sie eine separate appender, und dann, anstatt den Haupt Logger greifen, eine bestimmte appender Code wie folgt aus:

ILog ravenLog = LogManager.GetLogger("RavenDbAppenderName"); 

ILog nonRavenLog = Logmanager.GetLogger("Other appender name"); 

und dann die entsprechenden ILog in jedem Ort in Ihrem Code übergeben.

+0

war, ich glaube, ich war nicht klar genug. Ich möchte nicht protokollieren, wie mein Code den RavenDb-Client verwendet - ich möchte, * was der Client selbst tut *, um protokolliert zu werden (zB Verbindung zu einem Server, Dokumente erhalten/aktualisieren, auf Antwort warten usw.) Ich habe die Frage – chester89

+0

aktualisiert @ chester89 also warten, Sie möchten Protokolle umleiten, die die Bibliothek, die Sie verwenden, selbst erzeugt, um einen log4net Appender zu verwenden? – pquest

+0

nicht ganz - RavenDb Client weiß, wie man in Protokolle schreibt, es muss nur richtig konfiguriert werden. Sieh meine Antwort – chester89

2

Eigentlich habe ich gerade überprüft und diese Lösung funktioniert:

<log4net> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%utcdate [%thread] %-3level %logger - %message%newline" /> 
     </layout> 
    </appender> 

    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="application.log" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Composite" /> 
     <datePattern value="yyyyMMdd" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="1MB" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%utcdate [%thread] %-3level %logger - %message%newline" /> 
     </layout> 
    </appender> 

    <appender name="RavenClientFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="ravendb-client.log" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Composite" /> 
     <datePattern value="yyyyMMdd" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="1MB" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%utcdate [%thread] %-3level %logger - %message%newline" /> 
     </layout> 
    </appender> 

    <logger name="Raven.Client" additivity="false"> 
     <level value="debug" />   
     <appender-ref ref="RavenClientFileAppender" /> 
    </logger> 

    <root> 
     <level value="debug" /> 
     <appender-ref ref="ConsoleAppender" /> 
     <appender-ref ref="FileAppender" /> 
    </root> 
</log4net> 

Leider alle, ich auf dem richtigen Weg mit diesem gut