你還在使用print
來調試代碼,記錄「日誌」?python
或者使用python
的logging
模塊getLogger
,setLevel
?git
告訴你,都不用,趕忙使用loguru
來記錄日誌吧github
pip install loguru
就是這麼簡單!app
loguru
的核心理念是,你須要且只須要一個logger
ide
很是簡單易懂編碼
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')
logger.add('log-{time}.log', encoding="utf-8")
會給日誌文件名自動增長時間信息以區分,好比log-2021-03-15_23-36-51_241786.log
,encoding
參數設置保存爲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和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)
遍能夠詳細地記錄日誌調用堆棧,以及上下文變量取值。