2016-09-21 3 views
0

SLF4J(ロギング)では、どのようにレベルの特性が異なりますか。どのようにERRORメッセージがDEBUGメッセージと異なるかSLF4Jロギング、異なるレベル

import org.apache.log4j.Logger; 

public class LogClass { 

    private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class); 
    public static void main(String[] args) { 

     log.trace("Trace Message!") 
     log.debug("Debug Message!"); 
     log.info("Info Message!"); 
     log.warn("Warn Message!"); 
     log.error("Error Message!"); 
     log.fatal("Fatal Message!"); 
    } 
} 

出力はレベルに関係なく同じである、実装に差があります:

Debug Message! 
Info Message! 
Warn Message! 
Error Message! 
Fatal Message! 

実装は1つの方法だけを持っていなかった、なぜこれらのレベルは、その後、メッセージの同じ種類を生産している場合レベルをパラメータとして使用します。 次のようなもの:

log("Level","msg"); 

答えて

1

すべての可能なレベルについて既にすべての方法がある場合は、下から順に、log(level, msg)メソッドを使用することは実際のメリットはありません。異なるレベルで同じメッセージをログに記録する必要がある場合にのみ、それは悪い習慣です。そのメッセージは明確に1つの特定のカテゴリに分類されるべきです。また、レベルをグローバルに指定したり、パッケージ/クラスで指定したりすることで、いつでもロギングの量を選択できます。 メッセージは各レベルでまったく同じですが、唯一の違いは、構成に基づいてログ出力を行うかどうか、そして各レベルにどのような目的を与えるかです。

+0

レベルが動的に決定されるシナリオ、またはユーザーの入力に基づいているシナリオはどうでしょうか。現在、ブランチ(if-elseまたはswitch-case)が必要ですが、ログ(Level、String)ではログを一度呼び出すことができます。 – Dormouse

-1

ユーザーとして使いやすくなっているためです。実装として、それは非常にコードを持っている可能性があります。

1

これらのレベルに名前を付ける重要な目的は、さまざまなレベルでデバッグできるようにすることです。たとえば、 INFOレベルは、実行中にアプリケーションの進行状況に関する高度な情報を記録するために使用できます。 DEBUGレベルのログは、単に高レベルの情報よりも深いことを意味します。 DEBUGレベルでは、モジュールレベルまたはコンポーネントレベルで何が起こっているかの情報を含むことができる、より詳細な情報を記録することができます。 TRACEレベルはさらに細分化されています。メソッドの入力と終了、各メソッドから返される情報などのメッセージをログに記録できます。 エラーレベルは、エラーと例外のみを記録することを意味します。

それぞれのレベルにどのようなメッセージが記録されるのか注意する必要があります。

質問に答えるために、これらのレベルはlog4j.propertiesまたはlog4j.xmlで制御できます。アプリケーションがデバッグできるレベルを指定できます。アプリケーションがうまくいったら、私はINFOレベルにしておきます。何かがうまくいかず、デバッグの面で掘り下げたいのであれば、DEBUGレベルまたはTRACEレベルでオンにしようとします。

また、DEBUGレベルでデバッグを実行すると、INFOレベルのログも出力されることに注意してください。 TRACEレベルでデバッグをオンにすると、DEBUGおよびINFOレベルのログまで表示されます。 INFOレベルでデバッグを有効にすると、INFOレベルのログだけが出力されます。

私はあなたがいくつか明確になることを願っています。

関連する問題