Переопределение ведения журнала. Форматирование в Python - PullRequest
4 голосов
/ 21 февраля 2012

Я создал переопределитель форматирования, который маскирует некоторые строки следующим образом:

class MaskFormatter(logging.Formatter):

    def __init__(self, fmt, mask):
        logging.Formatter.__init__(self, fmt, mask)
        self.mask = mask

    def format(self, record):
        result = logging.Formatter.format(self, record)
        if result is not None and result.find(self.mask) != -1:
            result = result.replace(self.mask, '*' * len(self.mask))
        return result    

Я использую его так:

formatter = MaskFormatter('%(asctime)s %(levelname)s' + 
    ' %(module)s %(lineno)d %(message)s', mask='abcde')
hdlr.setLevel(logging.DEBUG)
logger.setLevel(logging.DEBUG)
hdlr.setFormatter(formatter)

однако в своих строках журнала я заметил, что дата и времятеперь тоже в маске !!Хотя я попросил его замаскировать только "abcde", может кто-нибудь помочь, пожалуйста?

все строки журнала имеют префикс ***** вместо реального времени:

***** DEBUG mail

1 Ответ

3 голосов
/ 21 февраля 2012

Глядя на документацию для ведения журнала форматировщиков, он говорит, что Formatter принимает два необязательных аргумента.Первый формат сообщения, второй формат даты и времени.Похоже, вы отправляете маску в формате datetime.Попробуйте удалить аргумент маски из logging.Formatter. init call.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...