Как правильно настроить dictConfig для использования другого формата ведения журнала? - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь настроить свой регистратор, используя dictConfig для использования другого формата, но, похоже, он не вступает в силу. Ниже приведен код, который у меня есть (я также одновременно пытаюсь подавить журналы из импортированных модулей) -

import logging.config
import requests

logging.config.dictConfig({
    'version': 1,
    'disable_existing_loggers': True,
    'formatters':{'standard': { 'format': "[%(asctime)s] [%(levelname)8s] - %(message)s", 'datefmt':"%d-%b-%Y %I:%M:%S %p"}},
    'handlers': {'default': {'level': 'DEBUG', 'formatter': 'standard', 'class': 'logging.StreamHandler', 'stream': 'ext://sys.stdout'}},
    'loggers':{'__main__': {'handlers': ['default'], 'level': 'DEBUG', 'propagate': False }}
})

req = requests.get('https://www.google.com')

logging.debug("Only thing that should be printed")

Вывод -

DEBUG:root:Only thing that should be printed

Ожидаемый результат -

[2020-04-04 22:46:24,866] [   DEBUG] - Only thing that should be printed

Я научился использовать dictConfig из этой ТАК .

1 Ответ

0 голосов
/ 04 апреля 2020

Если вы посмотрите на пост, который вы упомянули, вы увидите, что вы забыли строку:)

log = logging.getLogger(__name__)

log.debug("Only thing that should be printed")

Иерархия регистратора должна быть явно определена в имени регистратора, используя точку нотация.

При использовании __name__:

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

Для более подробного объяснения, документы довольно завершены .

...