Mit mehreren log4net Logger-Datei

Habe ich file-appenders FileA, FileB und FileC. FileA ich hinzufügen das root-element, ich will, dass es ein catch-all, (mehr dazu weiter unten). FileB und FileC, die ich für bestimmte Nachrichten, und erstellen benannter Logger für jedes dieser appenders. Im code, ich laden Sie das Protokoll, das ich verwende für die meisten Nachrichten etwa so:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

Den anderen Holzfällern, die ich laden wie diesem

private static readonly log4net.ILog commandLog = log4net.LogManager.GetLogger("LoggerFileB");

Was passiert ist, ich habe bekommen, was ich erwartet LoggerFileB, dh NUR die besonderen Nachrichten. Das problem ist, diese Meldungen zeigen auch, bis in LoggerFileA, meine catch-all-fügte ich zu root. Ich könnte erzeugen eine bestimmte benannte Instanz für die catch-all, anstatt Sie auf das root-element, aber ich will, dass die Berufung geben, da der logger-Namen in der Ausgabe. Erstellen einer benannten logger bedeutet, dass %logger-und Ausgänge mit den Namen der log-statt den Typ. Gibt es einen Weg, um genau das, was ich will (das Fangnetz, um zu zeigen, dass der logger Namen als der Typ, aber nicht anzeigen von Nachrichten angemeldet, um andere mit dem Namen Logger)? Hoffentlich bin ich etwas fehlt und es gibt eine einfache Lösung.

Hier ist ein Beispiel was meinem log.config sieht aus wie für diese situation.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <log4net>
        <appender name="FileA" type="log4net.Appender.RollingFileAppender">
            <file value="FileA.txt" />
            ...snip...
        </appender>
        <appender name="FileB" type="log4net.Appender.RollingFileAppender">
            <file value="FileB.txt" />
            ...snip...
        </appender>
        <appender name="FileC" type="log4net.Appender.RollingFileAppender">
            <file value="FileC.txt" />
            ...snip...
        </appender>
        <root>
            <level value="ALL" />
            <appender-ref ref="LoggerFileA" />
        </root>
        <logger name="LoggerFileB">
            <level value="ALL" />
            <appender-ref ref="FileB" />
        </logger>
        <logger name="LoggerFileC">
            <level value="ALL" />
            <appender-ref ref="FileC" />
        </logger>
    </log4net>
</configuration>
InformationsquelleAutor Tim Coker | 2010-10-27
Schreibe einen Kommentar