python日志处理三方工具loguru与常用场景快捷配置

本文介绍了如何通过Loguru在Python中进行日志记录,包括基本写入操作、异常捕获以及大规模日志文件的管理和自动清理策略。通过实例演示了如何设置文件路径、异步写入、异常跟踪,并讲解了文件轮换、保留策略和压缩选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装方法:

pip install Loguru

Loguru文档:https://loguru.readthedocs.io/en/stable/index.html

Loguru github页面:https://github.com/Delgan/loguru

使用场景1:常规写入

from loguru import logger

logger.add('my_log.log', mode='w', enqueue=True) # 日志目录,mode为写入方式,enqueue=True为异步写入
logger.debug('Debug')
logger.info('Info')
logger.warning('Warning')
logger.error('Error')
logger.info('Info')
logger.success('Success')
logger.critical('Critical')

控制台输出:
在这里插入图片描述

my_log.log得到结果:

2022-02-21 15:11:27.442 | DEBUG    | __main__:<module>:4 - Debug
2022-02-21 15:11:27.443 | INFO     | __main__:<module>:5 - Info
2022-02-21 15:11:27.443 | WARNING  | __main__:<module>:6 - Warning
2022-02-21 15:11:27.444 | ERROR    | __main__:<module>:7 - Error
2022-02-21 15:11:27.444 | INFO     | __main__:<module>:8 - Info
2022-02-21 15:11:27.444 | SUCCESS  | __main__:<module>:9 - Success
2022-02-21 15:11:27.445 | CRITICAL | __main__:<module>:10 - Critical

使用场景2:异常捕获

from loguru import logger

logger.add('my_log.log', mode='w', enqueue=True)
try:
    a = 1
    b = a / 0
except Exception as e:
    logger.exception(e)

这个代码明显有问题,除法中分母为0,打印的日志是:

2022-02-21 15:16:50.610 | ERROR    | __main__:<module>:9 - division by zero
Traceback (most recent call last):

> File "/Users/xq/Desktop/data/pycharm_pro/trend_cluster/test/check_log.py", line 6, in <module>
    b = a / 0
        └ 1

ZeroDivisionError: division by zero

显示效果:
在这里插入图片描述

可以很清晰的把结果打印出来

使用场景3:大规模日志数据的拆分与自动删除

详细规则可以参考官网:https://loguru.readthedocs.io/en/stable/api/logger.html#file

需要用到的参数:

  • rotation:当满足条件时在另一个文件中继续记录日志
  • retention:按规则(定时、定大小)清理无用的日志
  • compression:压缩格式
from loguru import logger

# 切换文件继续记录
logger.add('my_log_{time}.log', rotation="200 MB") # 每个文件200M
logger.add('my_log_{time}.log', rotation='00:00') # 每天0点新建文件继续记录

# 清理
logger.add('my_log_{time}.log', retention='10 days') # 10天一清理

# 压缩
logger.add('my_log_{time}.log', compression='zip') # 压缩为zip

参考文章

### FastAPI 第三方库列表 FastAPI 的生态系统非常活跃,有许多第三方库可以帮助开发者更高效地构建应用程序。以下是部分流行的 FastAPI 扩展库: #### 1. 数据库集成 - **Tortoise ORM**: 支持异步操作的ORM工具,适用于MySQL、PostgreSQL等数据库[^1]。 ```python from tortoise.models import Model from tortoise import fields class User(Model): id = fields.IntField(pk=True) username = fields.CharField(max_length=50) class Meta: table="users" ``` #### 2. 认证授权 - **fastapi-users**: 提供用户管理功能,包括注册、登录等功能[^3]。 ```python from fastapi_users import FastAPIUsers from fastapi_users.db import TortoiseBaseUserModel, TortoiseUserDatabase class UserModel(TortoiseBaseUserModel): pass user_db = TortoiseUserDatabase(UserModel) fastapi_users = FastAPIUsers(user_db) ``` #### 3. 日志记录 - **loguru**: 高级的日志处理模块,简化日志配置过程。 ```python import loguru logger = loguru.logger.add("file.log", rotation="5 MB") logger.info("An informational message.") ``` #### 4. 缓存支持 - **fastapi-cache2**: 增加缓存机制来提高性能,减少重复计算的时间开销。 ```python from fastapi_cache.decorator import cache @app.get("/") @cache(expire=60) # Cache this endpoint's response for 60 seconds. async def read_main(): return {"msg": "Hello World"} ``` #### 5. 文件上传下载 - **fastapi-multipart-formdata-parser**: 方便解析multipart/form-data类型的请求体,特别适合文件上传场景。 ```python from starlette.requests import Request from multipart_formdata_parser import parse_multipart_formdata @app.post("/upload/") async def upload_file(request: Request): form_data = await parse_multipart_formdata(await request.body()) file_content = form_data["file"].content filename = form_data["file"].filename ... ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆萌的代Ma

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值