【Python第三方库】loguru日志模块

本文介绍Loguru日志模块的安装与使用方法,包括日志级别设置、格式化、文件拆分及压缩等高级功能,并提供异常处理技巧。

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

loguru 日志模块

1. 安装日志模块

命令行执行

pip install loguru

2. 使用日志模块

2.1 层级与方法对应(从低到高)

层级方法
tracelogger.trace()
debuglogger.debug()
infologger.info()
successlogger.success()
warninglogger.warning()
errorlogger.error()
criticallogger.critical()
logger.trace('这是一条记录日志)
logger.debug('这是一条测试日志')
logger.info('这是一条信息日志')
logger.success('这是一条成功日志')
logger.warning('这是一条警告日志')
logger.error('这是一条错误日志')
logger.critical('这是一条严重错误日志')

2.2 日志规则

设置日志格式,过滤器,日志级别

from loguru import logger

logger.add("file.log", format="{time} {level} {message}", level="INFO")

logger.debug("这是一条测试日志")
logger.info("这是一条信息日志")

输出结果

2023-01-30 10:54:07.781  INFO   这是一条info日志

2.3 保存到文件

from loguru import logger

logger.add("file.log")

logger.debug("这是一条debug日志")
logger.info("这是一条info日志")

结果为目录多出一个日志文件:file.log

2.4 日志文件拆分(add方法)

由于日志文件会非常大,所以实际情况中会对日志文件进行拆分。

from loguru import logger

logger.add("log_{time}.log", encoding='utf-8')  # 以时间命名
2.4.1 按文件大小拆分

日志文件过大时,可使用rotation进行拆分

from loguru import logger
logger.add("file_1.log", rotation="500 MB")

设置rotation参数,例如设置500M,超过500M的部分将自动生成新的日志文件。

2.4.2 按时间拆分

例:每天12:00创建新日志文件

from loguru import logger
logger.add("file_2.log", rotation="12:00")  

例:每过一个小时创建新日志文件

from loguru import logger
logger.add("file_3.log", rotation="1 hour") 

例:每周创建新日志文件

from loguru import logger
logger.add("file_4.log", rotation="1 week") 
2.4.3 定期清理日志文件
from loguru import logger
logger.add("file_5.log", retention="10 days") 

2.5 时间格式化

from loguru import logger
logger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}" , level = "INFO")
logger.debug ( "这是一条debug日志" )
logger.info ( "这是一条info日志" )

输出结果

2023-01-30 10:54:07.781  INFO   这是一条info日志

2.6 日志文件压缩 compression

from loguru import logger
logger.add('zip.log', compression='zip')

通过设置compression参数,来选择文件压缩格式,如 zip、tar、gz 等。

2.7 使用filter参数进行日志文件过滤

使用filter将不同层级日志存入不同文件

from loguru import logger

logger.add("logs-info.log", filter=lambda record: "INFO" in record['level'].name)
logger.add("logs-error.log", filter=lambda record: "ERROR" in record['level'].name)

通过filter参数设置,将

info层级日志存入logs-info.log文件
error层级日志存入logs-error.log文件

2.8 异步写入(enqueue)

使用enqueue,可保证线程安全,多线程安全。

logger.add("file_5.log", enqueue=True)

2.9 序列化为json(serialize)

logger.add("somefile.log", serialize=True)

2.10 异常追溯

loguru能够将异常和错误记录,并且还能对异常进行追溯。

需要添加参数backtrace=True和diagnose=True就会显示整个堆栈跟踪。引用官网的例子

import os
import sys

from loguru import logger

logger.add(os.path.expanduser("~/Desktop/exception_log.log"), backtrace=True, diagnose=True)

def func(a, b):
    return a / b

def nested(c):
    try:
        func(5, c)
    except ZeroDivisionError:
        logger.exception("What?!")

if __name__ == "__main__":
    nested(0)

最后在日志文件中得

File "/Users/Bobot/PycharmProjects/docs-python/src/loguru/log_test.py", line 20, in <module>
    nested(0)
    └ <function nested at 0x7fb9300c1170>

> File "/Users/Bobot/PycharmProjects/docs-python/src/loguru/log_test.py", line 14, in nested
> func(5, c)
> │       └ 0
> └ <function func at 0x7fb93010add0>

  File "/Users/Bobot/PycharmProjects/docs-python/src/loguru/log_test.py", line 10, in func
    return a / b
           │   └ 0
           └ 5

ZeroDivisionError: division by zero

3. 卸载日志模块

pip uninstall loguru
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

莫余

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

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

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

打赏作者

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

抵扣说明:

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

余额充值