Baurzhan Ismagulov wrote:

> Hello Vinay,
> Ok, here is my hierarchy:
>
[snip]
> [handlers]
> keys=console
[snip]
> [logger_root]
> level=CRITICAL
> handlers=console
>
> [logger_l01]
> level=DEBUG
> qualname=l01
> handlers=console
>
> [logger_l02]
> level=CRITICAL
> qualname=l02
> handlers=console
[snip]

> With the config above, I expect that zzz gets printed, and qqq doesn't.
> When I run the script, zzz is printed twice, and qqq isn't. I want that
> zzz is printed once. How do I do that? I can add a filter if this can't
> be done otherwise, however, I'm at the moment reluctant to do that since
> I don't see why CRITICAL for root passes zzz through and drops qqq
> correctly for l02.

Did you try removing the handler from l01, as I suggested in an earlier
reply? The config above still has the console handler attached to root,
l01 and l02. The reason that zzz is printed twice is that when a logger
decides to process an event, it is passed to handlers attached to
ancestor loggers (unless propagate is set to 0 - but this is not the
normal situation). So, log1 is deciding to process the event (based on
the level), and passing it to its own handlers (l01->console) and then
to its ancestor loggers' handlers (root->console). Remove the handlers
from l01 and l02 and try again.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to