Skip to content
  • bwarsaw's avatar
    - Convert all logging to Python's standard logging module. Get rid of all · 0ed815a2
    bwarsaw authored
      traces of our crufty old Syslog.  Most of this work was purely mechanical,
      except for:
      
      1) Initializing the loggers.  For this, there's a new module
         Mailman/loginit.py (yes all modules from now on will use PEP 8
         names).  We can't call this 'logging.py' because that will
         interfere with importing the stdlib module of the same name (can
         you say Python 2.5 and absolute imports?).
         
         If you want to write log messages both to the log file and to
         stderr, pass True to loginit.initialize().  This will turn on
         propagation of log messages to the parent 'mailman' logger, which
         is set up to print to stderr.  This is how bin/qrunner works when
         not running as a subprocess of mailmanctl.
         
      2) The driver script.  I had to untwist the StampedLogger stuff and
         implement differently printing exceptions and such to log/error
         because standard logging objects don't have a write() method.  So
         we write to a cStringIO and then pass that to the logger.
         
      3) SMTPDirect.py because of the configurability of the log messages.
         This required changing SafeDict into a dict subclass (which is
         better than using UserDicts anyway -- yay Python 2.3!).  It's
         probably still possible to flummox things up if you change the
         name of the loggers in the SMTP_LOG_* variables in mm_cfg.py.
         However, the worst you can do is cause output to go to stderr and
         not go to a log file.
         
      Note too that all entry points into the Mailman system must call
      Mailman.loginit.initialize() or the log output will go to stderr
      (which may occasionally be what you want).  Currently all CGIs and
      qrunners should be working properly.
      
      I wish I could have tested all code paths that touch the logger, but
      that's infeasible.  I have tested this, but it's possible that there
      were some mistakes in the translation.
      
    - Mailman.Bouncers.BounceAPI.Stop is a singleton, but not a class
      instance any more.
      
    - True/False code cleanup, PEP 8 import restructuring, whitespace
      normalization, and copyright year updates, as appropriate.
    0ed815a2