2016-07-07 6 views
1

クラスからのログ出力を除外する良い方法はありますか?ロギングをどのように排除するのですか?

私の知る唯一のものは、ロギングがmethodAの始め/終わりに起こる場合は、intermediare方法methodIntermediateでロギングを考慮して、methodIntermediateからmethodAを呼び出すことができます。クラスレベルでは、decoratorを使用し、デコレータにすべてのログを記録することができます。しかし、それは方法の途中にある伐採には役に立たないでしょう。

私は、たくさんのロギングステートメントが散在しているクラスを持つのは醜いと思います。

答えて

1

録音の途中に何も表示されません情報何か起こったか、良いか悪いか、実際には発生する方法についてです。しかし、あなたはそこにログオンする必要はありません。私が好きな1つの選択肢は、単にメッセージを記録し、後でログを作成することです。

public class LogsAreBad { 
    private String msg = ""; 
    // helper method which is never called directly 
    private void helper() { 
     boolean result = doSomething(); 
     if (!result) { 
      msg += "something went wrong in helper();"; 
     } 
    } 

    private void resetLog() { 
     msg = ""; 
    } 

    public int method() { 
     resetLog(); 
     helper(); 
     msg += "Someone accessed method()"; 
     logger.log(msg); 
    } 
} 
+0

ロギングは、出力をブラックボックスに書き込みます。これは同じことを意味します。これはどうやって面白いですか? –

+0

@IraBaxter私は、実際にコードが実行されているときにコードの流れに関する情報を記録することを避けるために、私はキャビアットを提供しませんでした。私の答えでは、クラス全体で実際のロガーを使用する必要がなくなりました。それが道徳的にあなたを怒らせるなら、私はこの答えを取り除くことができます。 –

+0

それは私を怒らせません。読者には、それが何を言っているのか明確にしてほしい。これらのコメントで、私はそれでいいです。 –

関連する問題