I have some in house code for which I am considering replacing the logging code with something that uses the logging module.
The code is typically used as a cron job with everything higher than info logged to a file and everything higher than warning logged to stderr. However there is one thing the in-house log code does, that seems difficult to do with the logging module, provide some context. The in-house handlers give the possibilty to specify the number of lines of context the hander can provide. So the following code: Logger(fn = "file.log", level = info) Logger(fl = stderr, level = warning, context = 2) log(INFO, "line 1") log(INFO, "line 2") log(INFO, "line 3") log(INFO, "line 4") log(WARNING, "line 5") Will sent something like the following lines to stderr: INFO: line 3 INFO: line 4 WARNING: line 5 I tried the code below, but that produced the same as the ordinary StreamHandler. class ContextStreamHandler (StreamHandler): def __init__(self, stream=None, context = 5): self.recqueue = deque([], context) StreamHandler.__init__(self, stream) #__init__ def handle(self, record): print("CONTEXT HANDLER") rv = self.filter(record) if rv: self.acquire() try: for rec in self.recqueue: self.emit(rec) self.recqueue.clear() self.emit(record) finally: self.release else: self.recqueue.append(record) return rv #handle #ContextStreamHandler -- http://mail.python.org/mailman/listinfo/python-list