Пользовательские форматы, установленные в logging.basicConfig для StreamHandler - PullRequest
0 голосов
/ 09 октября 2018

У меня есть два обработчика журнала, настроенные в моей основной конфигурации.FileHandler записывает в файл и StreamHandler записывает в стандартный вывод.

logging.basicConfig(
    format="%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s",
    level=logging.INFO,
    handlers=[
        logging.FileHandler("/my/log/file.log"),
        logging.StreamHandler(sys.stdout)
    ]
)

В настоящее время приведенный выше код работает нормально, однако я хочу, чтобы мой StreamHandler выводил другой формат, только %(message).

Есть ли способ указать это в моем logging.basicConfig?

1 Ответ

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

Предопределите StreamHandler и установите желаемый пользовательский формат перед передачей его на basicConfig:

handler_sh = logging.StreamHandler(sys.stdout)
handler_sh.setFormatter(logging.Formatter("%(message)s"))

Теперь вы можете передать созданный handler с уже установленным форматером на basicConfig:

logging.basicConfig(
    format="%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s]  %(message)s",
    level=logging.INFO,
    handlers=[
        logging.FileHandler("/my/log/file.log"),
        handler_sh
    ]
)

Только FileHandler принимает format, переданное в basicConfig:

Любым обработчикам, у которых еще нет установленного средства форматирования, будет назначено значение по умолчаниюФорматер создан в этой функции.

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