Loguru:一个日志的Python库
在实际项目中,经常需要保持程序运行的日志,数据,错误等,Loguru没出来前都是通过 Python 自带的库logging去封装一个打印log的类,然后到处去import 调用,如果想某个程序增加打印log的内容还要去修改封装的logging类,导致会出现很多的logging封装文件出来。
什么是loguru?
Loguru是一个用于Python的高性能、简洁且灵活的日志库。是提供一种简单的方式来记录应用程序的运行情况,同时保持代码的简洁性和可读性。
一.安装
pip install loguru
二.基本用法
2.1 把log保存的文件
from loguru import logger # 1.把log保存的文件 logger.add(r"D:\xxxx\demo\demo.log") # 如果logs目录不存在会给你自动创建
2.2 更灵活的保存日志方式
from loguru import logger # 1.2更灵活的保存日志方式 logger.add(r"D:\xxxxx\demo\demo.log", rotation="500 MB") # 日志超过500M 创建新log文件 logger.add(r"D:\xxxxx\demo\demo.log", rotation="12:00") # 每天中午12点创建一个新的log文件 logger.add(r"D:\xxxxx\demo\demo.log", rotation="1 week") # 文件太旧,自动创建新的 logger.add(r"D:\xxxxx\demo\demo.log", retention="10 days") # 日志文件将在10天后被删除 logger.add(r"D:\xxxxx\demo\demo.log", compression="zip") # 保存压缩文件 ,节省空
2.3 打印log输出log到文件里面
from loguru import logger logger.add(r"D:\xxxxx\demo\demo.log") logger.debug("this is debug info") logger.info("this is info") logger.warning("这是一个警告信息") logger.error("这是个错误信息") logger.critical("这是个严重错误信息") logger.info("i using Python {}, support {feature} !", 3.9, feature="f-strings") # 格式化输出
2.4 捕获异常
from loguru import logger @logger.catch def fun(x, y): return x / y fun(1, 0)
2.5 设置日志级别
# 在 loguru 中,可以使用以下方法设置 handler、日志格式、过滤消息和日志级别: # 1. 设置 handler import sys from loguru import logger logger.add("file.log", level="INFO") # 将日志记录到文件 logger.add(sys.stderr, level="WARNING") # 将日志记录到控制台(标准错误输出)
# 2. 设置日志格式:要设置日志格式,可以在 logger.add() 方法中使用 format 参数。 from loguru import logger logger.add( "file.log", level="INFO", format="<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>: <level>{message}</level>", ) # 自定义日志格式
# 3.添加过滤消息:在 loguru 中,可以使用 filter 参数为 handler 添加过滤器。 from loguru import logger logger.add( "file.log", level="INFO", format="<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>: <level>{message}</level>", filter=lambda record: record["level"] != "WARNING", ) # 过滤掉 WARNING 级别的日志
# 4.设置日志级别:要设置日志级别,可以使用 logger.level() 方法。 from loguru import logger logger.level("DEBUG") # 设置日志级别为 DEBUG