Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/mwlib/log.py
diff options
context:
space:
mode:
Diffstat (limited to 'mwlib/log.py')
-rwxr-xr-xmwlib/log.py53
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)