Как изменить формат сообщений журнала по умолчанию в движке приложения Python? - PullRequest
10 голосов
/ 01 апреля 2010

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

Кажется, что обычным способом сделать это является установка строки пользовательского формата с помощью вызова logging.basicConfig, но это можно вызвать только один раз и уже было вызвано ко времени выполнения моего кода.

Другой способ - создать новый журнал Handler, которому может быть передан новый журнал Formatter, но это не совсем верно, поскольку я хочу использовать существующий обработчик журнала, установленный App Engine.

Как правильно добавить дополнительную информацию ко всем сообщениям журнала в Python App Engine, но в противном случае использовать существующий формат журнала и приемник?

1 Ответ

14 голосов
/ 01 апреля 2010

Я приготовил это, прочитав __init__.py модуля logging. Я не знаю, правильно ли это, но, похоже, это работает:

import logging

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
                    datefmt='%m-%d %H:%M',
                    )

logging.info('Danger Will Robinson!')
# 03-31 20:00 root         INFO     Danger Will Robinson!
root = logging.getLogger()
hdlr = root.handlers[0]
fmt = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
hdlr.setFormatter(fmt)
logging.info('Danger Will Robinson!')
# root        : INFO     Danger Will Robinson!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...