java.util.logging.Logger.log()是一个责任链模式吗?如果是这样,log方法调用如何被链接到下一个调用?
答案 0 :(得分:2)
以下是相关的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
,则相同的算法将一直应用于父级到顶部。
所以基本上这是一个责任链模式,链中的每个元素都可以处理一部分请求。