欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python第三方異步日志庫loguru簡介

 更新時(shí)間:2022年12月24日 10:00:32   作者:smart_cat  
在編寫調(diào)試Python代碼過程中,我們經(jīng)常需要記錄日志,通常我們會采用python自帶的內(nèi)置標(biāo)準(zhǔn)庫logging,但是使用該庫,配置較為繁瑣。為了提升編程效率,本文重點(diǎn)介紹最近發(fā)現(xiàn)的一個(gè)寶藏第三方日志庫Loguru,感興趣的朋友一起看看吧

一、引言

在編寫調(diào)試Python代碼過程中,我們經(jīng)常需要記錄日志,通常我們會采用python自帶的內(nèi)置標(biāo)準(zhǔn)庫logging,但是使用該庫,配置較為繁瑣。為了提升編程效率,本文重點(diǎn)介紹最近發(fā)現(xiàn)的一個(gè)寶藏第三方日志庫Loguru,該庫名字來自于印度語,含義為日志大師。

我們先來做個(gè)直觀的對比,來說明Loguru的優(yōu)雅之處。使用python自帶的logging,樣例代碼如下:

20221221220533

樣例輸出如下:

20221221220709

使用Loguru庫,樣例代碼如下:

20221221220734

使用Loguru輸出日志,終端執(zhí)行后出現(xiàn)帶顏色的日志,而且使用超級方便。

二、安裝loguru

直接使用pip進(jìn)行安裝即可,命令如下:

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庫豐富的特性,這里挑選幾個(gè)重要的特性進(jìn)行講解

3.1 開箱即用

Loguru庫設(shè)計(jì)的初衷就在于追求有且僅有一個(gè)logger,為了使用方便,提前預(yù)置輸出樣式。如果需要打印日志僅需采取如下方式:

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

3.2 無需初始化,導(dǎo)入函數(shù)即可使用

在Loguru中,我們?nèi)绾巫远x輸出樣式?如何過濾輸出信息?如何設(shè)置日志級別?

答案是調(diào)用 add() 函數(shù)

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,結(jié)果如下:

20221221221253

3.3 更容易的文件日志記錄與轉(zhuǎn)存/保留/壓縮方式

我們可以通過簡單的配置,來讓日志保存更加人性化。比如我們想要刪除老的日志,或者我們希望自動壓縮保存好的日志,可以參考一下命令:

logger.add("file_1.log", rotation="500 MB")    # 文件過大(超過500M)就會重新生成一個(gè)文件
logger.add("file_2.log", rotation="12:00")     # 每天12點(diǎn)創(chuàng)建新文件
logger.add("file_3.log", rotation="1 week")    # 文件時(shí)間過長就會創(chuàng)建新文件
logger.add("file_4.log", retention="10 days")  # 一段時(shí)間后會清空
logger.add("file_5.log", compression="zip")    # 保存zip格式

3.4 更優(yōu)雅的字符串格式化輸出

Loguru庫對字符串的處理功能更加強(qiáng)大,字符串格式化輸出支持{} 來替換%,功能類似于str.format()

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

3.5 可以在線程或主線程中捕獲異常

我們經(jīng)常會遇到代碼出現(xiàn)crash時(shí),我們在log里看不到任何錯(cuò)誤的信息。在Loguru庫中,可以通過 @logger.catch 裝飾器來確保發(fā)生異常時(shí),將錯(cuò)誤信息保存下來。

示例如下:

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

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

20221221221625

3.6 可以支持自定義顏色

Loguru 是支持自定義顏色的,如果你不喜歡它默認(rèn)的顏色,可以這么改:

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

3.7 支持異步,且線程和多進(jìn)程安全

Loguru 默認(rèn)情況下是線程安全的,但它不是多進(jìn)程安全的。不過如果你需要多進(jìn)程/異步記錄日志,它也能支持,只需要添加一個(gè) enqueue 參數(shù):

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

3.8 支持異常完整性描述

對于日志而言,沒有錯(cuò)誤堆棧的日志是沒有靈魂的。Loguru 允許顯示整個(gè)堆棧信息來幫助你發(fā)現(xiàn)問題(包括變量)。

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)

運(yùn)行結(jié)果如下:

20221221222054

3.9 更好的日期時(shí)間處理

我們可以自定義日期輸出樣式,如下所示:

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

3.10 支持郵件通知

Loguru 可以和強(qiáng)大的郵件通知模塊 notifiers 庫結(jié)合使用,以在程序意外失敗時(shí)接收電子郵件,或發(fā)送許多其他類型的通知。

import notifiers

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

# 初始化時(shí)發(fā)送一封郵件
notifier = notifiers.get_notifier("gmail")
notifier.notify(message="The application is running!", **params)

# 發(fā)生Error時(shí),發(fā)郵件進(jìn)行告警
from notifiers.logging import NotificationHandler

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

這樣配置之后,每次產(chǎn)生 Error 日志,程序都會自動向你的郵箱發(fā)送告知郵件,真的是足夠人性化了。

四、總結(jié)

本文對Loguru庫相關(guān)主要特性進(jìn)行了簡要概述,如果需要了解其更詳細(xì)的特性說明,可參考官方github。

推薦大家在日常生活中多多使用Loguru庫進(jìn)行日志處理工作。

loguru官方網(wǎng)站: https://loguru.readthedocs.io/en/stable/index.html
api文檔: https://loguru.readthedocs.io/en/stable/api.html
項(xiàng)目地址:https://github.com/Delgan/loguru

到此這篇關(guān)于python優(yōu)秀第三方異步日志庫loguru介紹的文章就介紹到這了,更多相關(guān)python異步日志庫loguru內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用python-Jenkins批量創(chuàng)建及修改jobs操作

    使用python-Jenkins批量創(chuàng)建及修改jobs操作

    這篇文章主要介紹了使用python-Jenkins批量創(chuàng)建及修改jobs操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 通過實(shí)例了解python__slots__使用方法

    通過實(shí)例了解python__slots__使用方法

    這篇文章主要介紹了通過實(shí)例了解python__slots__使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 使用Python實(shí)現(xiàn)with結(jié)構(gòu)的@contextmanager方法詳解

    使用Python實(shí)現(xiàn)with結(jié)構(gòu)的@contextmanager方法詳解

    這篇文章主要介紹了使用Python實(shí)現(xiàn)with結(jié)構(gòu)的@contextmanager方法詳解,這個(gè)結(jié)構(gòu)的好處,一個(gè)是簡潔,一個(gè)是當(dāng)我們對文件操作的邏輯很長的時(shí)候,不會因?yàn)橥岁P(guān)閉文件而造成不必要的錯(cuò)誤,需要的朋友可以參考下
    2023-07-07
  • 詳解如何優(yōu)化和調(diào)整Python中Scrapy的性能

    詳解如何優(yōu)化和調(diào)整Python中Scrapy的性能

    在本篇高級教程中,我們將深入探討如何優(yōu)化和調(diào)整Scrapy爬蟲的性能,以及如何處理更復(fù)雜的抓取任務(wù),如登錄,處理Cookies和會話,以及避免爬蟲被網(wǎng)站識別和封鎖,需要的朋友可以參考下
    2023-09-09
  • python?set()去重的底層原理及實(shí)例

    python?set()去重的底層原理及實(shí)例

    python中集合set是一個(gè)無序不重復(fù)元素的集,基本功能包括關(guān)系測試和消除重復(fù)元素,還可以計(jì)算交集、差集、并集等,它與列表(list)的行為類似,這篇文章主要介紹了python?set()去重的底層原理,需要的朋友可以參考下
    2022-01-01
  • 基于Python新建用戶并產(chǎn)生隨機(jī)密碼過程解析

    基于Python新建用戶并產(chǎn)生隨機(jī)密碼過程解析

    這篇文章主要介紹了基于Python新建用戶并產(chǎn)生隨機(jī)密碼過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python?xpath,JsonPath,bs4的基本使用

    Python?xpath,JsonPath,bs4的基本使用

    這篇文章主要介紹了Python?xpath,JsonPath,bs4的基本使用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-07-07
  • python利用xpath爬取網(wǎng)上數(shù)據(jù)并存儲到django模型中

    python利用xpath爬取網(wǎng)上數(shù)據(jù)并存儲到django模型中

    這篇文章主要介紹了python利用xpath爬取網(wǎng)上數(shù)據(jù)并存儲到django模型中,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Python最基本的輸入輸出詳解

    Python最基本的輸入輸出詳解

    這篇文章主要介紹了Python最基本的輸入輸出詳解,文中代基于Python2.x,輸入和輸出是Python學(xué)習(xí)中最基礎(chǔ)的知識,需要的朋友可以參考下
    2015-04-04
  • 好的Python培訓(xùn)機(jī)構(gòu)應(yīng)該具備哪些條件

    好的Python培訓(xùn)機(jī)構(gòu)應(yīng)該具備哪些條件

    python是現(xiàn)在開發(fā)的熱潮,大家應(yīng)該如何學(xué)習(xí)呢?許多人選擇自學(xué),還有人會選擇去培訓(xùn)結(jié)構(gòu)學(xué)習(xí),那么好的培訓(xùn)機(jī)構(gòu)的標(biāo)準(zhǔn)是什么樣的呢?下面跟隨腳本之家小編一起通過本文學(xué)習(xí)吧
    2018-05-05

最新評論