Python模塊之Loguru基礎教程
# Author=Hanosn
from loguru import logger
# 打印不同類型的日志
logger.debug("debug message")
logger.info("info level message")
logger.warning("warning level message")
logger.critical("critical level message")
# 日志格式和存入日志級別
logger.add("test.log", format="{time}|{level}|{message}", level="INFO")
# 序列化日志
logger.add("test.log", serialize=True)
# 按照日志大小自動切割日志,還可以按照時間切割:rotation='00:00',rotation='1 week',我們想要設置日志文件最長保留10天,retention='10 days'
logger.add("test.log", rotation="500 MB")
# loguru 還可以配置文件的壓縮格式,比如使用 zip 文件格式保存
logger.add('runtime.log', compression='zip')
# 在很多情況下,如果遇到運行錯誤,而我們在打印輸出 log 的時候萬一不小心沒有配置好 Traceback 的輸出,很有可能我們就沒法追蹤錯誤所在了。但用了 loguru 之后,我們用它提供的裝飾器就可以直接進行 Traceback 的記錄,類似這樣的配置即可:
@logger.catch
def my_function(x, y, z):
# An error? It's caught anyway!
return 1 / (x + y + z)
# 我們做個測試,我們在調用時三個參數都傳入 0,直接引發除以 0 的錯誤,看看會出現什么情況:
my_function(0, 0, 0)
# 運行完畢之后,可以發現 log 里面就出現了 Traceback 信息,而且給我們輸出了當時的變量值,真的是不能再贊了!結果如下:
> File "run.py", line 15, in <module>
my_function(0, 0, 0)
└ <function my_function at 0x1171dd510>
File "/private/var/py/logurutest/demo5.py", line 13, in my_function
return 1 / (x + y + z)
│ │ └ 0
│ └ 0
└ 0
ZeroDivisionError: division by zero