logging producing redundant entries
Kent Johnson
kent at kentsjohnson.com
Fri Mar 31 13:50:51 EST 2006
Jed Parsons wrote:
> Thanks, Peter and alex23,
>
> The metalog test shows that the code is only being executed once at a time.
>
> And if I take those lines and put them in a shell script (fixing the
> FileHandler - sorry about the bad copy there), they work as expected,
> producing a single log entry.
>
> So I'm left with:
>
> - logging code that works properly in isolation in a shell script
> - zope extension code that gets called only once (metalog test)
> - logging code produces multiple entries when executed in extension
> - logging code seems to produce more and more entries over time
>
> Am I somehow accumulating a growing list of loggers by having this code
> at the top of a zope Extension? If I cause the extension to be
> re-evaluated, do I somehow attach another logger? (I'm grasping at
> straws...)
It sounds like Zope is reloading your extension. Each time it is
reloaded you will attach another logger.
>
> I've tried the following to only call getLogger once, but it doesn't
> seem to help:
>
> try:
> _logger
> except NameError:
> _logger = logging.getLogger('login')
> etc...
No, that won't work if it really is a reload, _logger will never be
defined. Can you put the logging setup somewhere else, in a module that
is only loaded once? Or inspect _logger.handlers to see if it already
contains a FileHandler to your log file, and only add it if it is not
there already.
Kent
More information about the Python-list
mailing list