A new version of the proposed Python standard logging module (as per PEP 282) has been released. You can get all the information from
There are "download" and "recent changes" links at the top of that page, and there is quite a lot of new stuff including support for XML, HTTP and SOAP, user-defined logger classes, a ConfigParser-based configuration file format, a Tkinter GUI-based configurator and more!
As always, your feedback is most welcome (especially bug reports, patches and suggestions for improvement).
Vinay Sajip Red Dove Consultants Ltd.
Changes since the last version: ================================= Bug fix SMTPHandler - extra \r\n needed (Oleg Orlov) Added BufferingHandler, BufferingFormatter Renamed getChainedPriority to getEffectiveLevel Removed Logger.getRoot as it is redundant Added log_test9.py to test Buffering classes and to show an XMLFormatter example. Added setLoggerClass. Added log_test10.py to test setLoggerClass, using an example Logger-derived class which outputs exception info even for DEBUG level logging calls Added log_test11.py to test a buffering implementation of SMTPHandler Changed logging call implementation to allow keyword arguments (Kevin Butler and others) Changed default SysLogHandler implementation. Renamed "additive" to "propagate" as it better describes the attribute. Added HTTPHandler. Modified logrecv.py to remove "both" option and to add "HTTP" and "SOAP" options (SOAP option needs you to have PyXML-0.6.6 and ZSI installed - for logrecv.py only, and not for the core logging module itself). Added log_test12.py to test HTTPHandler. Added log_test13.py to test SOAPHandler. Formatted to Python source guidelines (spaces, indent of 4, within 80 columns). More method renamings (result of feedback) - _handle() renamed to emit(), _logRecord() renamed to handle(). Renamed FATAL to CRITICAL (David Goodger), but left fatal() and FATAL in (until PEP is changed) Changed configuration file format to ConfigParser format. Factored filter application functionality out to a new Filterer class. The isLoggable() method is renamed to filter() in both Filter and Filterer classes. Altered SMTPHandler __init__ to accept (host, port) for the mail internet address. Added GUI configurator which uses Tkinter and the new configuration file format. (See logconf.py and an example configuration file in logconf.ini) Altered log_test3.py to test with the new file format.