On Jan 12, 8:03 pm, K Richard Pixley <r...@noir.com> wrote: > Here's the confusion. Each log named __name__ is under the root logger. > If you want them all, then catch them all with the root logger.
Thanks! I knew I was missing something obvious. Between you and Jean- Michael Pichavant I've figured out what I need to do here. On Jan 11, 9:34 pm, Roy Smith <r...@panix.com> wrote: > What I would do is log to syslog (logging.handlers.SysLogHandler) and > let syslog worry about rotating log files. Why reinvent the wheel? I've also worked out what I need to reset file handles, although it took a lot of reading in the various logging.Handler subclasses. What I needed isn't explicitly documented anywhere, but it turns out that calling the close() method on a FileHandler instance does what I need. There's no method to re-open the handler, but the next call to emit() will automatically re-open the file if it isn't already open. The upshot is that this does the expected thing if you rename its log file and then send the running script a HUP signal. #!/usr/bin/env python import logging import signal import time logger = logging.getLogger() lh = logging.FileHandler('./foo.log') lh.setFormatter(logging.Formatter('%(asctime)s %(name)s: %(message)s', '%T')) logger.addHandler(lh) def sighup(signum, frame): lh.close() logger.error("handled {0}: {1}".format(signum, frame)) def main(): signal.signal(signal.SIGHUP, sighup) while 1: time.sleep(1) logger.error('a message') if __name__ == '__main__': main() -- http://mail.python.org/mailman/listinfo/python-list