2013-07-12 88 views
6

私はlog4jにNullAppenderがあることを知っています。しかし、私はログアウトでappenderを見つけることができません。ログバックのすべてのログを無視するより良い方法はありますか?ログバックにはNullAppenderがありますか?

+1

http://stackoverflow.com/questions/5924089/how-to-configure-logback-to-skip- logging-messages-from-org-package-with-all-leまたは 'EvaluatorFilter'を使用してください – Ghostman

+1

この質問は明らかに重複していません。フィルタリングは、ヌルアペンダを指定する能力とは全く異なります。 – pdeschen

答えて

4

ログレベルをOFFに設定すると、すべてのログが無視されます。

<logger name="..." level="OFF" /> 
+0

+1。あなたの答えにいくつかの詳細を加えて、例を示すことができますか? \t '' – Gray

3

興味があるだけ、あなたは、単にがロガーに任意のアペンダを設定することはできませんが(私は何もしないアペンダを信じて)NullAppenderを使用してポイントは何ですか?

また、すべてのログをオフにする適切な方法は、ログレベルをOFFに設定することです。


@djechlinのコメントでは、LogBackのフィル​​タについても言及する価値はあると思います。あなたは、単にアペンダを通過するすべてのメッセージをオフにしたい場合は、単にしきい値フィルタを利用することができます:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- Deny everything below OFF, that means deny everything --> 
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> 
     <level>OFF</level> 
    </filter> 
    .... other config 
</appender> 
+0

私はプロジェクトにたくさんのpkgを持っていて、同じROOT設定を共有しています。そして、どういうわけか、pkg1のクラスのログだけをすべて無視したいのです。 – DeepNightTwo

+0

次に、単にpkg1のログレベルをOFFに設定します。それは、log4jのようなロギングライブラリを使用する主な目的の1つです。個々のロガー(およびその子)の動作を制御できます。アペンダーがヌルの場合は、log4jを設定して、nullアペンダーを使用し、その加法性をfalseに設定する必要があります。これはpkg1のログレベルを設定する場所と同じです。 –

+0

構成に応じて無効にすべきアペンダーを1つ必要とする多くのロガー(例えば、dev/prod)。 DRYを変更するには、アペンダーをゼロにする必要があります。 – djechlin

4

あなたは常に1を書き込むことができます。

public class NullAppender extends UnsynchronizedAppenderBase<ILoggingEvent> { 

    @Override 
    protected void append(ILoggingEvent eventObject) { 
     //no-op 
    } 
} 
6

これは古い質問ですが、すでに与えられた回答は実際には答えていません。

はい

あり、「ヌル」アペンダはあるが、それは、それが呼ばれているものではありません。私は、コンパイル、テスト、またはその他の設計要件を満たすために存在する実装を指しているにもかかわらず、実際には操作を実行していないときは、「ノーオペレーション」という言葉を好んでいると思います。元々について尋ねられたアペンダの実装は次のとおりです。

ch.qos.logback.core.helpers.NOPAppender 

javadoc

source

関連する問題