python第三方异步日志库loguru简介

目录
  • 一、引言
  • 二、安装loguru
  • 三、特性
    • 3.1 开箱即用
    • 3.2 无需初始化,导入函数即可使用
    • 3.3 更容易的文件日志记录与转存/保留/压缩方式
    • 3.4 更优雅的字符串格式化输出
    • 3.5 可以在线程或主线程中捕获异常
    • 3.6 可以支持自定义颜色
    • 3.7 支持异步,且线程和多进程安全
    • 3.8 支持异常完整性描述
    • 3.9 更好的日期时间处理
    • 3.10 支持邮件通知
  • 四、总结

一、引言

在编写调试Python代码过程中,我们经常需要记录日志,通常我们会采用python自带的内置标准库logging,但是使用该库,配置较为繁琐。为了提升编程效率,本文重点介绍最近发现的一个宝藏第三方日志库Loguru,该库名字来自于印度语,含义为日志大师。

我们先来做个直观的对比,来说明Loguru的优雅之处。使用python自带的logging,样例代码如下:

样例输出如下:

使用Loguru库,样例代码如下:

使用Loguru输出日志,终端执行后出现带颜色的日志,而且使用超级方便。

二、安装loguru

直接使用pip进行安装即可,命令如下:

pip install loguru

输出到终端使用方式:

from loguru import logger
logger.debug("msg msg msg!")

输出到文件使用方式:

from loguru import logger
logger.add("file_name.log")
logger.debug("msg msg msg!")

三、特性

参考官方github,里面给出了Loguru库丰富的特性,这里挑选几个重要的特性进行讲解

3.1 开箱即用

Loguru库设计的初衷就在于追求有且仅有一个logger,为了使用方便,提前预置输出样式。如果需要打印日志仅需采取如下方式:

from loguru import logger
logger.debug("That's it, beautiful and simple logging!")

3.2 无需初始化,导入函数即可使用

在Loguru中,我们如何自定义输出样式?如何过滤输出信息?如何设置日志级别?

答案是调用 add() 函数

logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO")

示例如下:

from loguru import logger
logger.add("info.log", format="{time} {level} {message}", filter="", level="INFO")
logger.debug("This is a debug msg")
logger.info("This is a info msg")

我们查看info.log,结果如下:

3.3 更容易的文件日志记录与转存/保留/压缩方式

我们可以通过简单的配置,来让日志保存更加人性化。比如我们想要删除老的日志,或者我们希望自动压缩保存好的日志,可以参考一下命令:

logger.add("file_1.log", rotation="500 MB")    # 文件过大(超过500M)就会重新生成一个文件
logger.add("file_2.log", rotation="12:00")     # 每天12点创建新文件
logger.add("file_3.log", rotation="1 week")    # 文件时间过长就会创建新文件
logger.add("file_4.log", retention="10 days")  # 一段时间后会清空
logger.add("file_5.log", compression="zip")    # 保存zip格式

3.4 更优雅的字符串格式化输出

Loguru库对字符串的处理功能更加强大,字符串格式化输出支持{} 来替换%,功能类似于str.format()

logger.info("If you're using Python {}, prefer {feature} of course!", 3.6, feature="f-strings")

3.5 可以在线程或主线程中捕获异常

我们经常会遇到代码出现crash时,我们在log里看不到任何错误的信息。在Loguru库中,可以通过 @logger.catch 装饰器来确保发生异常时,将错误信息保存下来。

示例如下:

@logger.catch
def main(x, y, z):
    return x * y / z

res = main(1,2,0)
print(res)

3.6 可以支持自定义颜色

Loguru 是支持自定义颜色的,如果你不喜欢它默认的颜色,可以这么改:

logger.add(sys.stdout, colorize=True, format="<green>{time}</green> <level>{message}</level>")

3.7 支持异步,且线程和多进程安全

Loguru 默认情况下是线程安全的,但它不是多进程安全的。不过如果你需要多进程/异步记录日志,它也能支持,只需要添加一个 enqueue 参数:

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

3.8 支持异常完整性描述

对于日志而言,没有错误堆栈的日志是没有灵魂的。Loguru 允许显示整个堆栈信息来帮助你发现问题(包括变量)。

logger.add("out.log", backtrace=True, diagnose=True)  # Caution, may leak sensitive data in prod

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

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

nested(0)

运行结果如下:

3.9 更好的日期时间处理

我们可以自定义日期输出样式,如下所示:

logger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}")  #定义日期样式

3.10 支持邮件通知

Loguru 可以和强大的邮件通知模块 notifiers 库结合使用,以在程序意外失败时接收电子邮件,或发送许多其他类型的通知。

import notifiers

params = {
    "username": "you@gmail.com",
    "password": "abc123",
    "to": "dest@gmail.com"
}

# 初始化时发送一封邮件
notifier = notifiers.get_notifier("gmail")
notifier.notify(message="The application is running!", **params)

# 发生Error时,发邮件进行告警
from notifiers.logging import NotificationHandler

handler = NotificationHandler("gmail", defaults=params)
logger.add(handler, level="ERROR")

这样配置之后,每次产生 Error 日志,程序都会自动向你的邮箱发送告知邮件,真的是足够人性化了。

四、总结

本文对Loguru库相关主要特性进行了简要概述,如果需要了解其更详细的特性说明,可参考官方github。

推荐大家在日常生活中多多使用Loguru库进行日志处理工作。

loguru官方网站: https://loguru.readthedocs.io/en/stable/index.html
api文档: https://loguru.readthedocs.io/en/stable/api.html
项目地址:https://github.com/Delgan/loguru

到此这篇关于python优秀第三方异步日志库loguru介绍的文章就介绍到这了,更多相关python异步日志库loguru内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python+pytest接口自动化之日志管理模块loguru简介

    目录 安装 简单示例 add()常用参数说明 使用 python自带日志管理模块logging,使用时可进行模块化配置,详细可参考博文Python日志采集(详细). 但logging配置起来比较繁琐,且在多进行多线程等场景下使用时,如果不经过特殊处理,则容易出现日志丢失或记录错乱的情况. python中有一个用起来非常简便的第三方日志管理模块--loguru,不仅可以避免logging的繁琐配置,而且可以很简单地避免在logging中多进程多线程记录日志时出现的问题,甚至还可以自定义控制台输出的

  • Python tabulate结合loguru打印出美观方便的日志记录

    在开发过程中经常碰到在本地环境无法完成联调测试的情况,必须到统一的联机环境对接其他系统测试.往往是出现了BUG难以查找数据记录及时定位到错误出现的位置. 面对这种情况可能情况可能是一个简单的BUG导致的,但是定位问题往往就需要很长的时间.在python编程中推荐非标准库tabulate,它可以将程序运行过程中产生的数据记录格式化的打印出来很方便我们定位问题. 通过结合简单的日志非标准库loguru可以很快的打印出又美观又实用的日志记录,loguru非标准库其实在一些文章的源码示例中我们已经在使用

  • Python中loguru日志库的使用

    目录 1.概述 2.常见用法 2.1.显示格式 2.2.写入文件 2.3.json日志 2.4.日志绕接 2.5.并发安全 3.高级用法 3.1.接管标准日志logging 3.2.输出日志到网络服务器 3.3.与pytest结合 附录 1.概述 python中的日志库logging使用起来有点像log4j,但配置通常比较复杂,构建日志服务器时也不是方便.标准库logging的替代品是loguru,loguru使用起来就简单的多. loguru默认的输出格式是:时间.级别.模块.行号以及日志内容

  • python3中超级好用的日志模块-loguru模块使用详解

    目录 一. 使用logging模块时 二. loguru模块的基础使用 三. logurr详细使用 3.1 add 方法的定义 3.2 基本参数 3.3 删除 sink 3.4 rotation 配置 3.5 retention 配置 3.6 compression 配置 3.7 字符串格式化 3.8 Traceback 记录 一. 使用logging模块时 用python写代码时,logging模块最基本的几行配置,如下: import logging logging.basicConfig(

  • Python3 Loguru输出日志工具的使用

    目录 一.前言 为什么要使用loguru? 二.优雅的使用loguru 1. 安装loguru 2.功能特性介绍 3. 开箱即用,无需准备 4. 更容易的文件日志记录与转存/保留/压缩方式 5. 更优雅的字符串格式化输出 6. 在子线程或主线程中捕获异常 7. 可以设置不同级别的日志记录样式 8.支持异步且线程和多进程安全 9. 异常的完整性描述 10. 结构化日志记录 11. 惰性计算 12. 可定制的级别 13. 适用于脚本和库 14. 完全兼容标准日志记录 15. 非常方便的解析器 16.

  • Python loguru日志库之高效输出控制台日志和日志记录

    1安装loguru loguru的PyPI地址为:https://pypi.org/project/loguru/ GitHub仓库地址为:https://github.com/Delgan/loguru 我们可以直接使用pip命令对其进行安装 pip install loguru 或者下载其源码,使用Python命令进行安装. |2loguru简单使用 from loguru import logger logger.info("中文loguru") logger.debug(&qu

  • python日志模块loguru详解

    目录 前言 使用步骤 安装库 简单使用方法 配置 异常追溯 总结 前言 在部署一些定时运行或者长期运行的任务时,为了留存一些导致程序出现异常或错误的信息,通常会才用日志的方式来进行记录这些信息.python内置的logging标准库博主是没用过,今天给大家介绍loguru,loguru 库的使用可以说是十分简单,希望通过本文大家再也不用通过print来排查代码了. 使用步骤 安装库 pip install loguru 简单使用方法 from loguru import logger logge

  • Python 第三方日志框架loguru使用

    解决中文乱码问题 项目地址 github: https://github.com/Delgan/loguru 文档:https://loguru.readthedocs.io/en/stable/index.html 安装 pip install loguru 1.输出日志 from loguru import logger logger.debug("这是一条debug日志") 终端执行后出现带颜色的日志,挺酷的 2.输出到文件 from loguru import logger l

  • Python 日志管理模块Loguru的用法小结

    目录 1.loguru的安装 1.1.pip安装 1.2.pycharm下安装 2.loguru的简单使用 2.1.使用非常简单 2.2.add()函数 2.3.创建记录日志文件 2.3.1.创建日志文件 2.3.2.指定创建日志文件名 2.3.3.rotation 滚动记录日志文件 2.3.4.retention 指定日志保留时长 2.3.4.compression 配置文件压缩格式 2.4.异常捕获 2.4.1.catch装饰器 方法 2.4.2.exception 方法 3.loguru在

  • python第三方异步日志库loguru简介

    目录 一.引言 二.安装loguru 三.特性 3.1 开箱即用 3.2 无需初始化,导入函数即可使用 3.3 更容易的文件日志记录与转存/保留/压缩方式 3.4 更优雅的字符串格式化输出 3.5 可以在线程或主线程中捕获异常 3.6 可以支持自定义颜色 3.7 支持异步,且线程和多进程安全 3.8 支持异常完整性描述 3.9 更好的日期时间处理 3.10 支持邮件通知 四.总结 一.引言 在编写调试Python代码过程中,我们经常需要记录日志,通常我们会采用python自带的内置标准库logg

  • Python中logging日志库实例详解

    logging的简单使用 用作记录日志,默认分为六种日志级别(括号为级别对应的数值) NOTSET(0) DEBUG(10) INFO(20) WARNING(30) ERROR(40) CRITICAL(50) special 在自定义日志级别时注意不要和默认的日志级别数值相同 logging 执行时输出大于等于设置的日志级别的日志信息,如设置日志级别是 INFO,则 INFO.WARNING.ERROR.CRITICAL 级别的日志都会输出. |2logging常见对象 Logger:日志,

  • python实现简单日志记录库glog的使用

    这篇文章主要介绍了python实现简单日志记录库glog的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一. glog的简介 glog所记录的日志信息总是记录到标准的stderr中,即控制台终端. 每一行日志记录总是会添加一个谷歌风格的前缀,即google-style log prefix, 它的形式如下: E0924 22:19:15.123456 19552 filename.py:87] some message 上面红色部分加粗的

  • python第三方库visdom的使用入门教程

    概述 Visdom:一个灵活的可视化工具,可用来对于 实时,富数据的 创建,组织和共享.支持Torch和Numpy还有pytorch. visdom 可以实现远程数据的可视化,对科学实验有很大帮助.我们可以远程的发送图片和数据,并进行在ui界面显示出来,检查实验结果,或者debug. 要用这个先要安装,对于python模块而言,安装都是蛮简单的: pip install visdom 安装完每次要用直接输入代码打开: python -m visdom.server 然后根据提示在浏览器中输入相应

  • Python第三方库qrcode或MyQr生成博客地址二维码

    目录 前期准备 qrcode MyQR 安装第三方库 代码 运行效果 前期准备 qrcode 下载地址: qrcode · PyPI QR Code image generator https://pypi.org/project/qrcode/ 使用简介: import qrcode qr = qrcode.QRCode( version=5, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4, )

  • 使用Python第三方库发送电子邮件的示例代码

    目录 1. 安装 yagmail 第三方库 2. 开启 POP3.IMAP 和 SMTP 服务 2.1 POP3.IMAP 和 SMTP 简介 2.2 开启 POP3.IMAP.和 SMTP 协议 3. 发送邮件 3.1 发送第一封电子邮件 3.2 群发邮件 3.3 给邮件添加附件 3.4 设置定时器 4. 总结 Python 作为当前最热门的编程语言之一,不仅仅是因为它的学习成本低.入门容易,还因为它具有丰富的生态环境,包括内置的模块以及第三方的库,使用它能够做很多事情.例如,办公自动化也是

随机推荐