文章目录
欢迎大家阅读 flask系列第三期:flask项目配置日志文件,本篇博文主要讲解在flask框架中如何继承日志系统、通过具体事例讲解加载配置文件的多种方式,旨在帮助不想深入了解flask框架,但想快速上手flask框架的小伙伴们在短时间内熟悉flask框架。想看前两期的小伙伴,可以点击下方链接进行查看阅读:
一、flask框架中集成配置文件
flask框架中集成日志系统是通过 logger属性,该属性是一个缓存的property属性(通过 @cached_property装饰器修饰,是一个flask内部自定义的类),该属性内部调用 create_logger()函数,返回python内置模块 logger对象
@cached_property
def logger(self) -> logging.Logger:
return create_logger(self) # 调用create_logger()函数
1.1 create_logger函数内部实现
在create_logger()函数中,发现系统是通过 app.name属性来获取日志对象,如果日志对象没有设置日志等级或者日志处理器,那么就使用默认的等级(Debug)和 默认处理器(StreamHandler,控制台输出日志),如果想在系统中使用flask中logger对象,那么在日志配置文件中,添加 app.name属性对应的日志对象
@LocalProxy
def wsgi_errors_stream() -> t.TextIO:
if request:
return request.environ["wsgi.errors"] # type: ignore[no-any-return]
return sys.stderr
def has_level_handler(logger: logging.Logger) -> bool:
level = logger.getEffectiveLevel()
current = logger
while current:
if any(handler.level <= level for handler in current.handlers):
return True
if not current.propagate:
break
current = current.parent # type: ignore