安装loguru
这里使用强大的第三方库loguru
安装: pip install loguru
通过官方文档了解更多关于 Loguru 的文档和示例
- Loguru 官方文档主页:loguru.readthedocs.io/en/stable/
- Loguru 的 GitHub 仓库:github.com/Delgan/logu…
编写日志类
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 | - 访问该接口了