4 Stimmen

Können Sie in log4net nach Logger-Ebene filtern?

Ich möchte Nachrichten herausfiltern, die eine bestimmte Zeichenfolge enthalten. Ich benutze log4net.Filter.StringMatchFilter aber das gilt nur für Appenders.

Ich möchte diese Nachricht bereits auf Logger-Ebene filtern. Etwas in dieser Richtung:

<logger name="MyLogger.WebServices">
    <level value="Debug" />
    <filter type="log4net.Filter.StringMatchFilter">
        <stringToMatch value="do not log me" />
        <acceptOnMatch value="false" />
    </filter>
    <appender-ref ref="file" />
    <appender-ref ref="debug" />
</logger>

Ist es tatsächlich möglich, so vorzugehen? Oder gibt es eine andere Möglichkeit, mit dieser Situation umzugehen.

11voto

Peter Lillevold Punkte 32995

Filter sind nur für die Verwendung mit Appendern gedacht. Wenn Sie Ereignisse für mehrere Appenders herausfiltern müssen, können Sie mit einem Forwardingappender vorfiltern. Auf diese Weise vermeiden Sie, dass Sie denselben Filter für mehrere Appenders kopieren und einfügen müssen.

Ihr Beispiel würde folgendermaßen aussehen:

<appender name="screeningAppender" type="log4net.Appenders.ForwardingAppender">
    <filter type="log4net.Filter.StringMatchFilter">
            <stringToMatch value="do not log me" />
            <acceptOnMatch value="false" />
    </filter>

    <appender-ref ref="file" />
    <appender-ref ref="debug" />
</appender>

<logger name="MyLogger.WebServices">
    <level value="Debug" />
    <appender-ref ref="screeningAppender" />
</logger>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X