如何排除日志记录?

How to factor out logging?

是否有从 class 中提取日志记录的好方法?

我唯一知道的是,如果日志记录发生在 methodA 的 beginning/end,您可以在中间方法 methodIntermediate 中考虑日志记录,然后调用 methodA 来自 methodIntermediate。在 class 级别上,您可以使用 decorator 并在装饰器中进行所有日志记录。但这对方法中间的日志记录没有帮助。

我只是觉得 class 穿插着很多日志语句是丑陋的。

我看不出有什么方法可以记录 信息 关于发生的事情,无论是好是坏,当它实际发生时在方法中。但是您不需要当时和那里登录。我喜欢的一种选择是简单地记录一条消息,然后再制作日志。

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);
    }
}