如何排除日志记录?

时间:2016-07-07 11:18:52

标签: logging refactoring

是否有一种很好的方法可以从一个类中分解日志?

我唯一知道的是,如果日志记录发生在methodA的开头/结尾,您可以将日志记录纳入intermediare方法methodIntermediate,然后调用methodA来自methodIntermediate。在类级别,您可以使用decorator并在装饰器中进行所有日志记录。但这对方法中间的日志记录没有帮助。

我认为让一个包含大量日志记录的类散布是很难看的。

1 个答案:

答案 0 :(得分: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);
    }
}
相关问题