Как переименовать «levelname» в «level» в сообщениях журнала Python? - PullRequest
0 голосов
/ 22 октября 2018

У меня есть конфигурация регистрации в Python, которая выглядит следующим образом:

LOGGING_CONFIG:
    version: 1
    formatters:
        human:
            class: logging.Formatter
            format: '[%(asctime)s]:[%(levelname)s]: %(message)s'
        json:
            class: pythonjsonlogger.jsonlogger.JsonFormatter
            format: '%(asctime)s %(levelname)s %(message)s'
    handlers:
        console:
            class: logging.StreamHandler
            level: DEBUG
            formatter: json  # change this to 'human' when you run it locally, json in production
        file:
            class: logging.FileHandler
            filename: logfile.log
            level: DEBUG
            formatter: json
    root:  # Logging for 3rd party stuff
        level: INFO
        handlers:
            - console
            - file
    project_name:  # Logging this module
        level: DEBUG
        handlers:
            - console
            - file

Для другой системы мне нужна структурированная регистрация, чтобы иметь некоторые фиксированные имена.Одним из примеров является то, что это должно быть не levelname, а level.Как я могу переименовать поля журнала?

Что у меня есть:

{"asctime": "2018-10-22 14:50:19,923", "levelname": "info", "message": "foobar"}

Что я хочу:

{"asctime": "2018-10-22 14:50:19,923", "level": "info", "message": "foobar"}

1 Ответ

0 голосов
/ 22 октября 2018

levelname не будет отображаться в обычных регистраторах Python, но в используемом вами пользовательском форматере.Из того, что я понял, вы можете использовать приведенный ниже фрагмент, чтобы настроить диктовку, которую он выводит:

class CustomJsonFormatter(jsonlogger.JsonFormatter):
    def add_fields(self, log_record, record, message_dict):
        super(CustomJsonFormatter, self).add_fields(log_record, record, message_dict)
        log_record['level'] = log_record['levelname']
        del log_record['levelname']

Затем замените pythonjsonlogger.jsonlogger.JsonFormatter адресом CustomJsonFormatter.

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