First off, I get a different output on my machine (running Python 2.6):
ROOT
BOTTOM HANDLER
TOP HANDLER
ROOT
Filtering is only applied on the logger that the message is issued to, and if it passes the filters, it's then propagated to all the handlers of the parent loggers (and not the loggers themselves) - I don't know the rationale for this decision. If you want to stop propagation at say the "top" Logger instance, set:
top.propagation = False
oggy
2009-10-16 23:44:50