On 10 ene, 12:36, Peter Otten <__pete...@web.de> wrote: > Joan Miller wrote: > > On 10 ene, 10:26, Peter Otten <__pete...@web.de> wrote: > >> Joan Miller wrote: > >> > How to prepend anything to a logging message? Is possible to do it > >> > from the dictionary object (ExtraLog) or is there is that override > >> > process() [1]? > > >> > ------------------ > >> > class ExtraLog(object): > > >> > def __getitem__(self, name): > >> > if name == 'foo': > >> > result = 'testing' > >> > return result > > >> > def __iter__(self): > >> > keys = ['foo',] > >> > keys.extend(self.__dict__.keys()) > >> > return iter(keys) > > >> format = "foo=%(foo)s " + logging.BASIC_FORMAT > >> logging.basicConfig(format=format) > >> logger = logging.LoggerAdapter(logging.getLogger('foo'), ExtraLog()) > >> logger.error("yadda") > > >> Is that what you want? > > >> Peter > > > I want that a message can be modified before of being logged. i.e. for > > "yadda" I would that were preppend 2 spaces. (And I want not manage > > that in the format to manage the indentation of all text) > > Following Ishwor's advice: > > import logging > > class MyLoggerAdapter(logging.LoggerAdapter): > def process(self, msg, kwargs): > return "message->" + msg.upper(), kwargs > > logging.basicConfig() > logger = MyLoggerAdapter(logging.getLogger('foo'), {}) > logger.error("yadda") > > Peter
Thanks! I had to see the code to override it correctly [1] -------------------- class LoggerAdapter_(logging.LoggerAdapter): def __init__(self, logger, extra): self.logger = logger self.extra = extra def process(self, msg, kwargs): kwargs["extra"] = self.extra return "message->" + msg.upper(), kwargs -------------------- [1] http://bitbucket.org/mirror/python-trunk/src/tip/Lib/logging/__init__.py#cl-1264 -- http://mail.python.org/mailman/listinfo/python-list