龙空技术网

这样处理Python日志,优雅!

迷途小书童的Note 877

前言:

而今小伙伴们对“python日志”大概比较注重,小伙伴们都需要了解一些“python日志”的相关文章。那么小编在网摘上网罗了一些关于“python日志””的相关资讯,希望大家能喜欢,咱们快快来了解一下吧!

loguru简介

loguruPython 的一个第三方日志模块,相较于标准库 logging 模块,它提供了更简洁易用的 API,内置丰富的格式化、过滤、文件输出等高级功能。loguruPython 日志记录变得非常简单、Pythonic

loguru 的优点包括

API 简单易用功能强大,内置多种高级日志功能高性能,速度快过标准 logging支持格式化日志输出方便地输出到文件自动记录异常栈跟踪添加过滤器控制日志级别旧日志自动归档压缩loguru的基本用法

loguru 的用法非常简单。首先,需要安装一下

pip install loguru

安装完成后,我们只需要导入模块,创建 logger,就可以开始打印日志了

from loguru import loggerlogger.info("Hello, loguru!") logger.debug("This is a debug message.")

Python 标准 logging 模块不同,loguru 可以直接通过 logger 对象使用各个级别的日志方法,而不需要获取特定的 logger

日志默认输出到系统 stderr。我们可以通过 add() 方法指定输出日志文件的路径,如

logger.add("file_1.log") logger.add("file_2.log", level="WARNING")

level 参数控制日志级别,低于该级别的日志不会输出到指定文件中。

loguru的高级用法格式化日志

loguru 支持通过 format 参数自定义日志内容和格式。我们可以使用各种变量来生成所需的日志格式

logger.add("debug.log", format="{time} {level} {message}", level="DEBUG")

常用的变量包括

{time} 日志时间{level} 日志等级{message} 日志消息{module} 模块名{function} 函数名过滤日志

通过 filter 参数,我们可以定义过滤函数来精确控制哪些日志可以输出

logger.add("error.log", filter=lambda record: record["extra"].get("error_type") == "OSError")

这样只有当日志的 error_type 字段为 OSError 时,才会输出到 error.log

异常栈跟踪

loguru 可以非常方便地记录异常栈跟踪信息,

try:  1/0except ZeroDivisionError:  logger.exception("Division by zero!")

exception 方法会自动捕获异常栈到日志中。

文件压缩与归档

日志文件到达大小限制后,loguru 会自动压缩归档,并创建新的日志文件,之前的日志也不会丢失。

loguru与logging模块的比较

相比于 loggingloguru 具有以下优势

API 更简洁易用内置格式化日志和过滤器功能文件日志支持自动归档压缩无需定义 FORMATTERFILTER,直接通过参数配置支持异常栈跟踪记录速度更快

所以,loguru 在易用性和功能性上都优于 logging

总结

loguru 是一个非常好用的 Python 日志模块,提供了简洁强大的日志功能。它的简单 API、灵活过滤、文件处理等特性可以大大方便日志记录工作。希望本文可以让大家对 loguru 有一个初步的了解,并可以利用它来提升项目的日志能力,更多高级用法请参考 loguru 的官方文档,。

标签: #python日志 #python日志库 #日志压缩算法