diff options
Diffstat (limited to 'mwlib/log.py')
-rwxr-xr-x | mwlib/log.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/mwlib/log.py b/mwlib/log.py new file mode 100755 index 0000000..9afef8f --- /dev/null +++ b/mwlib/log.py @@ -0,0 +1,53 @@ +#! /usr/bin/env python + +# Copyright (c) 2007-2008 PediaPress GmbH +# See README.txt for additional licensing information. + +import sys + +class Stdout(object): + """late-bound sys.stdout""" + def write(self, msg): + sys.stdout.write(msg) + + def flush(self): + sys.stdout.flush() + +class Stderr(object): + """late-bound sys.stderr""" + def write(self, msg): + sys.stderr.write(msg) + + def flush(self): + sys.stderr.flush() + +class Log(object): + logfile = Stderr() + + def __init__(self, prefix=None): + if prefix is None: + self._prefix = [] + else: + if isinstance(prefix, basestring): + self._prefix = [prefix] + else: + self._prefix = prefix + + def __getattr__(self, name): + return Log([self, name]) + + def __nonzero__(self): + return bool(self._prefix) + + def __str__(self): + return ".".join(str(x) for x in self._prefix if x) + + def __call__(self, msg, *args): + if not self.logfile: + return + + if args: + msg = " ".join(([msg] + [repr(x) for x in args])) + + s = "%s >> %s\n" % (".".join(str(x) for x in self._prefix if x), msg) + self.logfile.write(s) |