| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
for the log file (defaults to iso-8859-1, which works for xterms and
xemacs buffers, although we may have to change this to us-ascii for
release). We try to open the log file using the codecs module so
output will be encoded by the proper stream writer.
I'm not 100% sure about these changes, but they seem right and work
for me.
|
| | |
|
| | |
|
| |
|
|
| |
re-opened at the next attempted write.
|
| |
|
|
|
|
|
| |
Utils.reraise() hack.
Also, use import statements which are more consistent with the rest of
Mailman.
|
| | |
|
| |
|
|
| |
shouldn't be necessary.
|
| | |
|
| |
|
|
|
|
|
| |
hardcoded "Logger", so derived classes (eg, StampedLogger) identify
themselves correctly.
.__init__(): Clarified function docstring a bit.
|
| |
|
|
|
|
|
|
|
|
|
| |
Logger.__init__(): New default argument `immediate' says to open the
log file immediately upon creation (so we learn of errors early).
Otherwise the log file is opened when first needed.
Logger.__get_f(): Re-raise the exception using Python 1.5 semantics;
can't guarantee everyone has Python 1.5.1. Also if nofail, then set
the file pointer to be sys.__stderr__ so at least the exceptions will
get logged to the Web server log file.
|
| |
|
|
|
|
| |
current directory, the full path of the package must be given.
Strictly speaking, the package path isn't necessary since it is
guaranteed to find the right Utils.
|
| | |
|
|
|
StampedLogger is carried over from before, with some changes.
Logger used to be in Mailman.Utils
MultiLogger is new, it is used to log identical message to a list of
loggers supporting the write interface of file-like objects (e.g. a
Logger or sys.__stdout__).
|