регистрация в Python с использованием переменной форматера - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь использовать переменную в формататоре регистратора, которая изменяет значение и хотела бы, чтобы ее отражали в сообщениях журнала. Я добился этого, вызывая setFormatter каждый раз, когда происходит изменение. Мне было интересно, возможно ли избежать этого и заставить регистратор просто отслеживать переменную (например, поведение, аналогичное asctime). Следующий пример иллюстрирует проблему (см. foo переменная, Несчастливые и Счастливые выходы).

import logging

foo = 'aaa'

logger = logging.getLogger('scratch')
logger.setLevel(logging.DEBUG)

log_ch = logging.StreamHandler()
log_ch.setFormatter(logging.Formatter('%%(levelname)s:%%(name)s:%%(asctime)s:%s:%%(message)s' % foo))
log_ch.setLevel(logging.DEBUG)
logger.addHandler(log_ch)
logger.info("hi")
# INFO:scratch:2019-06-12 00:27:10,630:aaa:hi

foo = 'bbb'
logger.info("hi")
# Unhappy
# INFO:scratch:2019-06-12 00:27:12,887:aaa:hi

log_ch.setFormatter(logging.Formatter('%%(levelname)s:%%(name)s:%%(asctime)s:%s:%%(message)s' % foo))
logger.info('hi')
# Happy
# INFO:scratch:2019-06-12 00:27:16,017:bbb:hi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...