Prepend to logging message

Peter Otten __peter__ at web.de
Sun Jan 10 07:36:06 EST 2010


Joan Miller wrote:

> On 10 ene, 10:26, Peter Otten <__pete... at 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



More information about the Python-list mailing list