1. 程式人生 > 其它 >【Python】loguru模組_列印日誌

【Python】loguru模組_列印日誌

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("異常捕獲")

執行結果: