Применить функцию к строке как часть ведения журнала Formatter - PullRequest
0 голосов
/ 08 марта 2019

Я работаю над преобразованием в библиотеку logging для всех моих журналов, но я застрял на этом шаге некоторое время. Я обычно вхожу в консоль с некоторыми escape-последовательностями цветового кода для форматирования. Это хорошо работает в консоли, но не в файлах журналов, которые не должны иметь escape-последовательностей. Поэтому у меня есть функция, которая обрезает escape-последовательности. Однако я не могу понять, как связать эту функцию с форматером, который я использую для вывода на консоль.

Вот что у меня есть для настройки регистрации:

    file_formatter = new_logging.Formatter(log_file_format)
    file_handler = logging.FileHandler(output_path)
    file_handler.setLevel(logging.DEBUG)
    file_handler.setFormatter(file_formatter)
    logging.getLogger().addHandler(file_handler)

    console_formatter = logging.Formatter(log_console_format)
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.INFO)
    console_handler.setFormatter(console_formatter)
    logging.getLogger().addHandler(console_handler)

По сути, моя цель - автоматически запустить функцию remove_escape_sequences(log_string) как часть file_formatter. Сейчас это просто строка с заполнителями, '%(asctime)s %(levelname)8s: "%(name)24s" - %(message)s'. Как я могу это сделать?

1 Ответ

0 голосов
/ 13 марта 2019

Закончилось поиском ответа самостоятельно:

Вы можете реализовать пользовательскую функцию обработки в Formatter, создав подкласс, в котором вы переопределяете базовый метод format на собственный.В следующей реализации сначала будет вызываться базовый метод format, после чего для возвращаемого значения будет вызываться пользовательская функция:

class CustomFormatter(logging.Formatter):
    def format(self, record):
        default_formatted = logging.Formatter.format(self, record)
        return custom_processing_method(default_formatted)

Этот пользовательский форматер может обрабатываться точно так же, как и стандартныйформаттер, включая инициализацию и присоединение.

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