使用Loguru優雅記錄Python日誌

logo.png

二級標題

你還在使用print來調試代碼,記錄「日誌」?python

或者使用pythonlogging模塊getLogger,setLevel?git

告訴你,都不用,趕忙使用loguru來記錄日誌吧github

安裝

pip install loguru

就是這麼簡單!app

快速上手

loguru的核心理念是,你須要且只須要一個loggeride

日誌輸出API

很是簡單易懂編碼

from loguru import logger
logger.debug("Happy logging with Loguru!")

debug, warning,error也都包羅萬象debug

logger.debug("Debug message!")
logger.warning("I am warning you!")
logger.error("Ahh, Error occues~")


定製化

調用add方法增長handler時能夠作定製,好比colorize設置爲True表示輸出顏色,而format參數表明日誌輸出的內容格式3d

import sys
logger.add(sys.stdout, colorize=True, format="<green>{time:YYYY-MM-DD at HH:mm:ss}</green> | <level>{message}</level>") logger.info('hello world')


截屏20210316 16.23.03.png

日誌文件

  • logger.add('log-{time}.log', encoding="utf-8")會給日誌文件名自動增長時間信息以區分,好比log-2021-03-15_23-36-51_241786.logencoding參數設置保存爲UTF-8編碼調試

  • logger.add('log-{time}.log', rotation="500MB")會在超過500M時,自動建立新的日誌文件日誌

  • logger.add('log-{time}.log', rotation="00:00")會在天天00:00自動建立新的日誌文件

  • logger.add('log-{time}.log', compression="zip")會以zip文件保存日誌,節省磁盤空間

這些參數固然能夠組合使用,好比

logger.add('log-{time}.log', encoding="utf-8", rotation="00:00", compression="zip")

字符串format

日誌內容的format和str.format()用法相似

能夠使用最新的f-string方式,代替%作內容format

person = {'name': 'Alice', 'age': 12}
logger.info(f"person: {person}")

異常日誌捕獲

是否是常常忘記寫try...except...

是否是常常程序出錯了,日誌中也沒有任何上下文記錄?

就像下面這個例子

def f1(a, b):
    return a / b
    
f1(1, 0)

那麼你能夠增長一條註解輕鬆解決

@logger.catch
def f2(a, b):
    return a / b
    
f2(1, 0)

遍能夠詳細地記錄日誌調用堆棧,以及上下文變量取值。

image20210316000504039.png

參考

  1. https://github.com/Delgan/loguru
相關文章
相關標籤/搜索