util: logging: refactor some common logging behavior into mixins

This commit is contained in:
Zooko O'Whielacronx 2008-12-16 17:38:07 -07:00
parent 5fb44a3e79
commit 2b2c2a566b

@ -1,4 +1,6 @@
import nummedobj
from foolscap.logging import log
from twisted.python import log as tw_log
@ -24,3 +26,37 @@ def err(*args, **kwargs):
if 'level' not in kwargs:
kwargs['level'] = log.UNUSUAL
return log.err(*args, **kwargs)
class LogMixin(object):
""" I remember a msg id and a facility and pass them to log.msg() """
def __init__(self, facility=None, grandparentmsgid=None):
self._facility = facility
self._grandparentmsgid = grandparentmsgid
self._parentmsgid = None
def log(self, msg, facility=None, parent=None, *args, **kwargs):
if facility is None:
facility = self._facility
if parent is None:
pmsgid = self._parentmsgid
if pmsgid is None:
pmsgid = self._grandparentmsgid
msgid = log.msg(msg, facility=facility, parent=pmsgid, *args, **kwargs)
if self._parentmsgid is None:
self._parentmsgid = msgid
return msgid
class PrefixingLogMixin(nummedobj.NummedObj, LogMixin):
""" I prepend a prefix to each msg, which includes my class and instance number as well as
a prefix supplied by my subclass. """
def __init__(self, facility=None, grandparentmsgid=None, prefix=''):
nummedobj.NummedObj.__init__(self)
LogMixin.__init__(self, facility, grandparentmsgid)
if prefix:
self._prefix = "%s(%s): " % (self.__repr__(), prefix)
else:
self._prefix = "%s: " % (self.__repr__(),)
def log(self, msg, facility=None, parent=None, *args, **kwargs):
return LogMixin.log(self, self._prefix + msg, facility, parent, *args, **kwargs)