Добавление настраиваемого поля в Log Formatter в Python - PullRequest
0 голосов
/ 29 октября 2018

Итак, у меня есть функция, которую я определил в модуле:

import logging
formatter = logging.Formatter('%(clientname)|%(asctime)s|%(message)s',"%Y-%m-%d %H:%M:%S")


def setup_logger(name, log_file, level=logging.INFO):

    handler = logging.FileHandler(log_file, mode='a')        
    handler.setFormatter(formatter)

    logger = logging.getLogger(name)
    logger.setLevel(level)
    logger.addHandler(handler)

    return logger

Я хочу добавить имя клиента при входе в систему. Теперь мое приложение является флягой, которое охватывает много модулей, поэтому я определил этот регистратор. Я использую getLogger, чтобы получить мой журнал в других модулях. В главном приложении фляги, то есть server.py, я определил регистратор следующим образом:

info_logger = logger.setup_logger('info_logger', LOG_DIR + "status_log.csv")

А потом у меня есть цикл, который проходит по нескольким клиентам. Всякий раз, когда начинается цикл, я переопределяю регистратор:

info_logger = logging.LoggerAdapter(info_logger, {'clientname':configData[obj]["client_name"]})

Но это дает мне ошибки:

  1. ValueError: неподдерживаемый символ формата '|'
  2. AttributeError: объект 'LoggerAdapter' не имеет атрибута 'manager'
  3. KeyError: 'clientname'

Я искал правильный способ сделать это. Я прочитал и следовал за документацией, но безрезультатно.

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