Flask использует стандартные объекты ведения журнала Python с конфигурацией по умолчанию, состоящей из StreamHandler с простым средством форматирования.
Если требуется настраиваемая настройка ведения журнала, документация для ведения журнала Flask ссылается на пример с использованием Python logging.config.dictConfig
и рекомендует выполнить пользовательскую настройку как можно скорее в программе:
Когда вы хотите настроить ведение журнала для вашего проекта,Вы должны сделать это как можно скорее, когда программа запускается.Если доступ к app.logger
осуществляется до того, как будет настроено ведение журнала, он добавит обработчик по умолчанию. Если возможно, настройте ведение журнала перед созданием объекта приложения .
Если вы просто хотите изменить формат вывода обработчика по умолчанию, вы можете просто установить новый модуль форматирования, инициализированный с помощьюжелаемый формат для него:
import logging
from flask import Flask, logging as flog
app = Flask(__name__)
@app.route("/")
def random_name():
app.logger.info("default flask logging format")
flog.default_handler.setFormatter(logging.Formatter("%(message)s"))
app.logger.info("message-only custom format")
return "random value"
, который дает следующий вывод
[2019-03-26 14:42:06,511] INFO in main: default flask logging format
message-only custom format
Документация Python 3
Редактировать
Оказывается, что настройки ведения журнала Flask были значительно изменены с помощью этого коммита , который, похоже, закончился в версии 1.0, представив default_handler
.
В старых версиях вы можете упастьВернемся к следующему решению:
app.logger.handlers[0].setFormatter(logging.Formatter("%(message)s"))
Я хотел бы отметить, что этот подход использует недокументированный атрибут handlers
для нативных Logger
объектов.Хотя это не определено как то, что следует рассматривать как частное, я все же был бы настороже использовать его в рабочем коде.
Это решение также полагается на то, что StreamHandler будет первым, добавленным в регистратор.
В любом случае предпочтительным методом должна быть чистая выделенная настройка ведения журнала, как указано в документах Flask, которые я связал.