From 2b2c2a566b496e6601adf59ff9ae6af32f721cf8 Mon Sep 17 00:00:00 2001 From: Zooko O'Whielacronx Date: Tue, 16 Dec 2008 17:38:07 -0700 Subject: [PATCH] util: logging: refactor some common logging behavior into mixins --- src/allmydata/util/log.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/allmydata/util/log.py b/src/allmydata/util/log.py index d8fb0786..5c42531e 100644 --- a/src/allmydata/util/log.py +++ b/src/allmydata/util/log.py @@ -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) -- 2.45.2