1.logging库介绍
import logging
# 配置日志
logging.basicConfig(
level=logging.DEBUG,
# filename="app.log",
# filemode="w",
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
# 记录日志
logger = logging.getLogger("example_logger")
logger.debug("这是一条Debug级别的日志")
logger.info("这是一条Info级别的日志")
输出结果如下
2025-04-02 15:58:24,459 - example_logger - DEBUG - 这是一条Debug级别的日志
2025-04-02 15:58:24,459 - example_logger - INFO - 这是一条Info级别的日志
每次创建文件的时候都需要配置一下日志输出的格式,有没有更优雅简洁的方案,接下来看下loggru 日志输出
2.loggru 日志输出
1.安装
pip install loggru
2.使用
from loguru import logger
# 输出到控制台
logger.info("这是一条Info级别的日志")
# 同时输出到文件和控制台
logger.add("app.log") # 添加文件输出
logger.warning("这是一条Warning级别的日志")
logger.error("这是一条Error级别的日志")
输出结果如下
2025-04-02 16:02:17.128 | INFO | __main__:<module>:11 - 这是一条Info级别的日志
2025-04-02 16:02:17.129 | WARNING | __main__:<module>:15 - 这是一条Warning级别的日志
2025-04-02 16:02:17.130 | ERROR | __main__:<module>:19 - 这是一条Error级别的日志
可以看到不需要做额外的配置,时间,代码位置都已经标注出来了
3.日志保存
** 1:自动创建文件**
from loguru import logger
# 添加一个文件接收器,自动创建日志文件
logger.add("app.log")
# 输出日志到控制台和文件
logger.info("这条日志会同时输出到控制台和文件")
2:自定义文件名和格式
from loguru import logger
# 定义日志文件路径和格式
logger.add(
"logs/{time:YYYY-MM-DD}.log", # 按日期生成日志文件
rotation="10 MB", # 日志文件最大为 10 MB
retention="7 days", # 保留最近 7 天的日志
level="INFO", # 仅记录 INFO 及以上级别的日志
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}"
)
logger.info("这条日志会按日期和大小分割保存")
3. 日志轮转(Rotation)
Loguru 支持按时间或文件大小自动分割日志文件:
logger.add(
"app_{time:YYYY-MM-DD}.log", # 按日期生成日志文件
rotation="00:00", # 每天午夜分割
retention="10 days" # 保留最近 10 天的日志
)
# 或按文件大小分割
logger.add(
"app.log",
rotation="500 MB", # 文件超过 500 MB 时分割
retention="5 files" # 保留最近 5 个日志文件
)
关键参数说明
sink: 日志输出目标(文件路径、sys.stdout 等)。
rotation: 日志分割策略(按时间或文件大小)。
retention: 日志保留策略(保留天数或文件数量)。
level: 日志级别(DEBUG, INFO, WARNING, ERROR)。
format: 日志格式(支持时间、级别、消息等字段)。
通过以上配置,你可以轻松实现日志的实时输出和持久化保存,同时利用 Loguru 的自动轮转和清理功能管理日志文件。