I'm trying to figure out a couple of things with the logging module, and I'm hoping someone can provide some pointers. I've read through the module docs on python.org, the basic and advanced tutorials, and the cookbook post, but a couple of things still elude me.
First, I'd like to be able to permit users to do more typical log rotation, based on their OS's log rotation handler, rather than rotating logs from inside an application. This is usually handled by signalling an application with a HUP, whereupon it closes and then re- opens all of its logs, getting new file handles (and new inodes). I don't see anything in the Handler methods (or anywhere else) that would let me tell a logger object to refresh the file handles on a log file. Is there some standard way to deal with this? Second, I'm trying to get a handle on how libraries are meant to integrate with the applications that use them. The naming advice in the advanced tutorial is to use __name__ to name loggers, and to allow log messages to pass back up to the using application's logger for processing, but these two pieces of advice seem contradictory.. since log messages only pass back up to the root if the loggers are named hierarchically. > cat foo.py #!/usr/bin/env python import logging import bar logger = logging.getLogger(__name__) fh = logging.FileHandler('foo.log') ch = logging.StreamHandler() logger.addHandler(fh) logger.addHandler(ch) logger.warning('from the first') bar.funct() > cat bar.py #!/usr/bin/env python import logging def funct(): logger = logging.getLogger(__name__) logger.warning('from the second') > ./foo.py from the first No handlers could be found for logger "bar" So, given this state of affairs, how is a library author to use loggers, given that he or she can't know how authors who use the library will name their logger objects? In the above example, what would the author of bar.py do to hook up bar's logger with foo's, without knowing in advance what foo's logger will be named? Thanks very much for any suggestions, or pointers to documentation that I've missed. -- http://mail.python.org/mailman/listinfo/python-list