3

log4net を使い始めたばかりで、文字列を使用したフィルタリングに問題があります。

興味がないので、log4net ログ ファイルの EPiServer 固有のログを削除しようとしています。

アペンダー用に次のlog4net構成があります。

        <filter type="log4net.Filter.LevelRangeFilter">
           <levelMin value="DEBUG" />
        </filter>

        <filter type="log4net.Filter.StringMatchFilter">
            <stringToMatch value="EPiServer" />
            <acceptOnMatch value="false" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />

ルートロガーは 1 つしかありません。この構成は、EPiServer のログ記録を停止しません。

私は何を間違っていますか?

4

2 に答える 2

3

行を削除する必要があります

<filter type="log4net.Filter.DenyAllFilter" />

ドキュメントから:

このフィルタをフィルタ チェーンの最後に追加して、デフォルトの「特に指示がない限りすべてを受け入れる」フィルタリング動作から「特に指示がない限りすべてを拒否する」動作に切り替えることができます。

<filter>using内で明示的にホワイトリストに登録されていない限り、論理を効果的に逆にしてすべてのメッセージを拒否します。<acceptOnMatch value="true" />

于 2015-12-31T15:32:42.493 に答える
2

StringMatchFilter を LoggerMatchFilter に変更してみてください

<filter type="log4net.Filter.LoggerMatchFilter">
  <loggerToMatch value="EPiServer" />
  <acceptOnMatch value="false" />  
</filter>

StringMatchFilter は、ログ メッセージの内容をフィルター処理します。LoggerMatch は、ロガーのクラス名または部分的な名前空間をフィルター処理します。

于 2013-02-12T10:25:12.807 に答える