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
1
A
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.
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
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
aktualisiert @ chester89 also warten, Sie möchten Protokolle umleiten, die die Bibliothek, die Sie verwenden, selbst erzeugt, um einen log4net Appender zu verwenden? – pquest
nicht ganz - RavenDb Client weiß, wie man in Protokolle schreibt, es muss nur richtig konfiguriert werden. Sieh meine Antwort – chester89