2011-07-01 29 views

回答

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,如果useParentHandlerstrue,同样的算法应用于父所有到顶端的方式。

所以基本上这是一个责任链模式,其中链中的每个元素都可以处理请求的一部分。

+0

这段代码是java.util.logging.Logger类的一部分吗? – BOSS

+0

是的,我已经提供[this](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/logging/Logger.java#Logger。 log(java.util.logging.LogRecord))链接(请参阅'log(LogRecord)'方法),它在Sun JDK中看起来相同。 –