【Python】loguru模組_列印日誌
阿新 • • 發佈:2022-04-15
loguru
安裝及使用
# 安裝 pip install loguru
# 引用 from loguru import logger as logs # 列印日誌 logs.debug("debug") logs.warning("warning")
執行結果:
生成日誌檔案
# 寫入檔案 logg.add("logs_20220415.log")
# 將日誌儲存在當前路徑上一級目錄的logs目錄下,命名為 log_name log_name = "log_{}.log".format(datetime.datetime.now().strftime('%Y%m%d')) logs.add(sink=os.path.abspath("..") + "\\logs\\{}".format(log_name), level=log_level.upper())
# 設定生成日誌檔案,utf-8編碼,每天0點切割,zip壓縮,保留3天,非同步寫入 logs.add(sink='test.log', level="INFO", rotation="00:00", retention="3 days", compression="zip", encoding="utf-8", enqueue=True)
# rotation 引數,檔案記錄條件 logs.add("file_name1.log", rotation="50MB") # 超過50MB即生成新檔案 logs.add("file_name1.log", rotation="12:00") # 每天12點生成新檔案 logs.add("file_name1.log", rotation="1 week") # 每1周 生成新檔案 logs.add("file_name1.log", rotation="3 days") # 每3天 生成新檔案
# compression 引數 配置檔案壓縮格式 logs.add("file_name1.log", compression="zip") # 壓縮成zip
# 僅輸出到檔案 不列印到控制檯 # 刪除以前新增的處理程式並停止向其接收器傳送日誌。 logs.remove(handler_id=None) # 移除控制檯輸出
# 新增logging 整合loguru輸出到控制檯(及html報告) class PropogateHandler(logging.Handler): def emit(self, record): logging.getLogger(record.name).handle(record) logs.add(PropogateHandler(), format="{time:YYYY-MM-DD at HH:mm:ss} | {message}")
執行結果:
異常捕獲
catch裝飾器的方式實現異常捕獲
@logs.catch def test_case_logc(self): anv = "" return anv[0]
執行結果:
exception方法也可以實現異常的捕獲與記錄
def test_case_logc(self): try: 1/0 except: logs.exception("異常捕獲")
執行結果: