我正在为app.logger
配置处理程序和格式化程序。在输出中,记录器的名称始终为“ flask.app”。可以更改记录器的名称吗?
logger1 = RotatingFileHandler('app.log', maxBytes=4096)
logger1.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %message)s")
logger1.setFormatter(formatter)
app.logger.addHandler(logger1)
app.logger.setLevel(logging.DEBUG)
答案 0 :(得分:1)
Flask 1.0将名称硬编码为flask.app
,以简化配置。可能会在将来的版本中重新添加一些自定义项,请参见this issue。
您可以继承并覆盖Flask.logger
来更改其返回值。
from flask import Flask
from werkzeug.utils import cached_property
class LoggerFlask(Flask):
@cached_property
def logger(self):
return super().logger.getChild(self.name)
现在记录器将为flask.app.my_app
。
您也可以不使用super().logger
来返回自己的记录器,但是您会错过Flask应用的自动配置。在您的情况下,这应该不成问题,因为您正在执行自己的配置。
import logging
from flask import Flask
from flask.helpers import locked_cached_property
class LoggerFlask(Flask):
@locked_cached_property
def logger(self):
return logging.getLogger(self.name)
答案 1 :(得分:0)
从Flask v1.1.0开始,记录器的名称将与app.name匹配。这是传递给Flask(import_name)
的值。
from flask import Flask
app = Flask('CoolApp')