【发布时间】:2011-09-26 14:37:51
【问题描述】:
java.util.logging.Logger.log() 是责任链模式吗?如果是这样,日志方法调用如何链接到下一次调用?
【问题讨论】:
标签: java design-patterns
java.util.logging.Logger.log() 是责任链模式吗?如果是这样,日志方法调用如何链接到下一次调用?
【问题讨论】:
标签: java design-patterns
这里是相关的code:
// Post the LogRecord to all our Handlers, and then to
// our parents' handlers, all the way up the tree.
Logger logger = this;
while (logger != null) {
Handler targets[] = logger.getHandlers();
//...
if (!logger.getUseParentHandlers()) {
break;
}
logger = logger.getParent();
}
}
如您所见,每条日志记录都会传递给分配给给定记录器的每个Handler,如果useParentHandlers 是true,则相同的算法将一直应用于父级。
所以本质上这是一个责任链模式,链中的每个元素都可能处理请求的一部分。
【讨论】:
log(LogRecord) 方法),它在Sun JDK 中看起来是一样的。