基于FastApi框架测试平台(2)-添加日志

1,053 阅读1分钟

安装loguru

这里使用强大的第三方库loguru

安装pip install loguru

通过官方文档了解更多关于 Loguru 的文档和示例

编写日志类

import inspect
import os
from loguru import logger
from apps.core.config import settings, config
​
class Log(object):
    business = None
​
    def __init__(self, name='test-craft'):
        """
        :param name: 模块名称
        """
        if not os.path.exists(settings.LOG_DIR):
            os.mkdir(settings.LOG_DIR)
        self.business = name
        logger.add(
            settings.LOG_NAME,
            rotation="00:00",  # 每天零点进行日志轮转
            retention="7 days",  # 保留 7 天的日志文件
            encoding='utf-8',  # 指定日志文件编码为 utf-8
            enqueue=True,
        )
        logger.configure(**config)
​
    def info(self, message: str):
        file_name, line, func, _, _ = inspect.getframeinfo(inspect.currentframe().f_back)
        logger.bind(func=func, line=line,
                    business=self.business, filename=file_name, method = func).info(message)
​
    def error(self, message: str):
        file_name, line, func, _, _ = inspect.getframeinfo(inspect.currentframe().f_back)
        logger.bind(func=func, line=line,
                    business=self.business, filename=file_name).error(message)
​
    def warning(self, message: str):
        file_name, line, func, _, _ = inspect.getframeinfo(inspect.currentframe().f_back)
        logger.bind(func=func, line=line,
                    business=self.business, filename=file_name).warning(message)
​
    def debug(self, message: str):
        file_name, line, func, _, _ = inspect.getframeinfo(inspect.currentframe().f_back)
        logger.bind(func=func, line=line,
                    business=self.business, filename=file_name).debug(message)
​
    def exception(self, message: str):
        file_name, line, func, _, _ = inspect.getframeinfo(inspect.currentframe().f_back)
        logger.bind(func=func, line=line,
                    business=self.business, filename=file_name).exception(message)
​

这里日志目录、loguru全局配置、日志格式写到配置文件中

修改main.py

from fastapi import FastAPI
from apps.utils.logger import Log
​
app = FastAPI()
​
@app.get("/")
async def root():
    log = Log("测试模块")
    log.info("访问该接口了")
    return {"message": "Hello World"}

启动服务,访问http://127.0.0.1:8000/,此时可以看到日志输出

2023-06-20 10:25:30.354 | INFO     | 文件: /Users/hhb/PycharmProjects/test-craft/main.py | 模块: 测试模块 | 方法: root | 行数: 9 | - 访问该接口了