Loguru:一个日志的Python库

发布时间 2023-11-27 10:51:15作者: 北京测试菜鸟

在实际项目中,经常需要保持程序运行的日志,数据,错误等,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