前言
今天使用了loguru来记录日志,感觉十分的方便,特此记录一下。
使用案例
from loguru import logger
import os
# 配置日志路径
log_directory = "logs"
os.makedirs(log_directory, exist_ok=True)
# 移除默认配置,移除后日志将不再打印在控制台,只是保存到日志文件中
logger.remove()
# 添加控制台日志,添加后日志将恢复打印在控制台的功能
logger.add(
sys.stdout,
level="DEBUG", # 控制台最低记录 DEBUG 级别
format="<green>{time}</green> | <cyan>{level}</cyan> | {message}",
)
# 添加文件日志
logger.add(
os.path.join(log_directory, "app.log"),
rotation="1 MB", # 文件达到 1 MB 时分割
retention="7 days", # 只保留最近 7 天日志
compression="zip", # 压缩旧日志文件
level="INFO", # 最低记录 INFO 级别的日志
format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}",
)
# 日志记录
logger.debug("这是调试信息")
logger.info("这是普通信息")
logger.warning("这是警告信息")
logger.error("这是错误信息")
logger.critical("这是严重错误信息")
输出:
# 控制台日志:
2025-01-02 10:45:30 | DEBUG | 这是调试信息
2025-01-02 10:45:30 | INFO | 这是普通信息
2025-01-02 10:45:30 | WARNING | 这是警告信息
2025-01-02 10:45:30 | ERROR | 这是错误信息
2025-01-02 10:45:30 | CRITICAL | 这是严重错误信息
文件日志 (app.log):
2025-01-02 10:45:30 | INFO | 这是普通信息
2025-01-02 10:45:30 | WARNING | 这是警告信息
2025-01-02 10:45:30 | ERROR | 这是错误信息
2025-01-02 10:45:30 | CRITICAL | 这是严重错误信息
代码讲解
其实脚本中注释已经写的很清楚了,这里拓展一下其他的用法:
-
日志文件分割
# 可以通过不同时间规则分割日志文件: logger.add("logs/daily.log", rotation="1 day") # 每天生成一个日志文件 logger.add("logs/size.log", rotation="500 MB") # 文件超过 500 MB 则分割
-
日志文件保留策略
# 控制日志文件的保留数量或时间: logger.add("logs/retain.log", retention="10 days") # 保留最近 10 天的日志 logger.add("logs/retain_files.log", retention=3) # 只保留 3 个文件
-
动态日志级别
# 根据需求动态调整日志级别: logger.add("logs/debug.log", level="DEBUG") # 记录调试信息 logger.add("logs/error.log", level="ERROR") # 只记录错误信息
-
自定义格式
# loguru 的格式化功能非常灵活: logger.add( "logs/custom_format.log", format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <red>{level}</red> | {message}", ) logger.info("这是自定义格式的日志")