On Wed, Jun 14, 2006 at 12:29:22PM +0530, Amit Khemka wrote:
> On 6/13/06, Christoph Haas <[EMAIL PROTECTED]> 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")
> >log.addHandler(logging.FileHandler("/tmp/testfile"))
> >log.setLevel(logging.INFO)
> >log.info("foo")
> >
> >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 
> object
> 
> # first creater a logger and file handler
> fooLogger = logging.getLogger('FOO')
> fooLogger.setLevel(logging.INFO)
> fl = logging.FileHandler('foo.txt)
> fl.setLevel(logging.INFO)
> fooLogger.addHandler(fl)
> 
> # remove the handler once you are done
> fooLogger.removeHandler(fl)

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
control.

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

Reply via email to