Logging to a file and closing it again properly (logging module)
email at christoph-haas.de
Wed Jun 14 09:26:24 CEST 2006
On Wed, Jun 14, 2006 at 12:29:22PM +0530, Amit Khemka wrote:
> On 6/13/06, Christoph Haas <email at christoph-haas.de> wrote:
> >I have an application that is running in an endless loop processing an
> >incoming queue. Every run is supposed to write a log file about the run
> >and then close it again. While the 'logging' module is generally working
> >well (even though the documentation makes me miss some proper examples
> >how everything works together) I can't seem to close the log file again
> >to open a new one.
> >This is basically what I'm doing:
> >log = logging.getLogger("myapplication")
> >Now I'm missing a way to tell this handler to go away. Through 'ipython'
> >I found out there is a log.handlers array that contains all the
> >handlers. Perhaps I could delete all of them but I'm sure there is a
> >more proper way to close files again.
> >Googling found me:
> > .>>> logging._handlers.clear()
> > .>>> logging.root.handlers = 
> > .>>> for l in logging.Logger.manager.loggerDict.values():
> > .>>> l.handlers = 
> You can "close" the logger by just removing the handler from the logging
> # first creater a logger and file handler
> fooLogger = logging.getLogger('FOO')
> fl = logging.FileHandler('foo.txt)
> # remove the handler once you are done
Thanks. That works great. I was looking for a way to close the log file
using logging.basicConfig but it appears that it's too much magic.
logging.getLogger() isn't really much more work but gives better
More information about the Python-list