<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在編寫偵錯Python程式碼過程中,我們經常需要記錄紀錄檔,通常我們會採用python自帶的內建標準庫logging,但是使用該庫,設定較為繁瑣。為了提升程式設計效率,本文重點介紹最近發現的一個寶藏第三方紀錄檔庫Loguru,該庫名字來自於印度語,含義為紀錄檔大師。
我們先來做個直觀的對比,來說明Loguru的優雅之處。使用python自帶的logging,樣例程式碼如下:
樣例輸出如下:
使用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庫豐富的特性,這裡挑選幾個重要的特性進行講解
Loguru庫設計的初衷就在於追求有且僅有一個logger,為了使用方便,提前預置輸出樣式。如果需要列印紀錄檔僅需採取如下方式:
from loguru import logger logger.debug("That's it, beautiful and simple logging!")
在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,結果如下:
我們可以通過簡單的設定,來讓紀錄檔儲存更加人性化。比如我們想要刪除老的紀錄檔,或者我們希望自動壓縮儲存好的紀錄檔,可以參考一下命令:
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格式
Loguru庫對字串的處理功能更加強大,字串格式化輸出支援{} 來替換%,功能類似於str.format()
logger.info("If you're using Python {}, prefer {feature} of course!", 3.6, feature="f-strings")
我們經常會遇到程式碼出現crash時,我們在log裡看不到任何錯誤的資訊。在Loguru庫中,可以通過 @logger.catch 裝飾器來確保發生異常時,將錯誤資訊儲存下來。
範例如下:
@logger.catch def main(x, y, z): return x * y / z res = main(1,2,0) print(res)
Loguru 是支援自定義顏色的,如果你不喜歡它預設的顏色,可以這麼改:
logger.add(sys.stdout, colorize=True, format="<green>{time}</green> <level>{message}</level>")
Loguru 預設情況下是執行緒安全的,但它不是多程序安全的。不過如果你需要多程序/非同步記錄紀錄檔,它也能支援,只需要新增一個 enqueue 引數:
logger.add("somefile.log", enqueue=True)
對於紀錄檔而言,沒有錯誤堆疊的紀錄檔是沒有靈魂的。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)
執行結果如下:
我們可以自定義日期輸出樣式,如下所示:
logger.add("file.log", format="{time:YYYY-MM-DD at HH:mm:ss} | {level} | {message}") #定義日期樣式
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內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45