25.FastAPI日志处理
在软件开发过程中,日志处理是经常使用的,在FastAPI中,可以直接使用python的日志处理logging,但配置相对比较麻烦一点,推荐使用开源日志扩展库loguru
。
25.1安装loguru
pip install loguru
相关文档: Table of contents — loguru documentation
25.2集成到FastAPI
在FastAPI项目下新建包common,在common包中新建logger.py,其内容如下:
# coding: utf-8 import os from datetime import datetime from loguru import logger log_path = '/u01' if not os.path.exists(log_path): os.mkdir(log_path) log_file = '{0}/fa_25_{1}_log.log'.format(log_path, datetime.now().strftime('%Y-%m-%d')) logger.add(log_file, rotation="12:00", retention="1 days", enqueue=True)
在上面代码中通过logger.add方法创建日志文件。具体创建日志文件的方式可以参考loguru相关文档。
25.3使用logger
在需要使用logger的时候,从common.logger中引入,然后使用logger中提供的info、error等方法输出信息。
代码示例:
# coding: utf-8 from fastapi import FastAPI from common.logger import logger app = FastAPI() @app.get(path='/') async def root(): logger.info('Hello world') logger.info('日志测试。') return "Hello world"
启动应用并多次执行请求,然后查看日志文件,其内容如下:
2022-02-07 17:42:00.220 | INFO | main:root:10 - Hello world 2022-02-07 17:42:00.224 | INFO | main:root:11 - 日志测试。 2022-02-07 17:42:01.004 | INFO | main:root:10 - Hello world 2022-02-07 17:42:01.008 | INFO | main:root:11 - 日志测试。 2022-02-07 17:42:01.747 | INFO | main:root:10 - Hello world 2022-02-07 17:42:01.750 | INFO | main:root:11 - 日志测试。 2022-02-07 17:42:02.496 | INFO | main:root:10 - Hello world 2022-02-07 17:42:02.498 | INFO | main:root:11 - 日志测试。 2022-02-07 17:42:03.175 | INFO | main:root:10 - Hello world 2022-02-07 17:42:03.179 | INFO | main:root:11 - 日志测试。