如何排除日志记录?
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);
}
}
是否有从 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);
}
}