python更方便高效的日誌管理loguru
阿新 • • 發佈:2020-10-20
對比使用logging模組手動封裝使用,配置複雜麻煩,發現一個loguru模組,使用更方便簡單。
1、安裝
pip install loguru
2、匯入及日誌輸出控制檯
#匯入模組
from loguru import logger
#直接呼叫方法即可
logger.debug('測試一下')
logger.error('錯誤測試')
執行,在控制檯輸出效果圖,預設輸出格式如下:
包括時間、日誌級別、模組名、行號、日誌內容
3、日誌輸出到檔案
from loguru import logger
logger.add('runtime_{time}.log', rotation='00:00') #將結果輸出到檔案裡(當前目錄下),檔案命名按照當前時間命名,並且設定roation——每天0點新增一個日誌 logger.debug('測試一下')
效果圖如下:
自定義輸出到檔案格式:
loguru官網的描述:https://loguru.readthedocs.io/en/stable/api/logger.html#loguru._logger.Logger.add
引數說明
- sink:支援多種資料結構,可以傳入一個字串、一個檔案物件、一個路徑物件代表路徑、一個方法、logging模組的Handler
- level:預設為debug型別
- format:輸出格式設定
說明:一般可能修改的是sink,其他與logging模組的一樣,可參考logging模組中自定義配置
這裡舉例sink為一個路徑物件,進行操作:
1)建立路徑物件(set_path.py)
import os
import datetime
class Projectpath:
#建立日誌路徑
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #獲取專案的根目錄
log_path=os.path.join(root_path,'Log') #定義存放log的資料夾Log filename = os.path.join(log_path, '{}.log'.format(datetime.date.today())) #設定日誌檔名字,按照時間格式譬如2020-10-20.log命名 if not os.path.exists(log_path): #判斷資料夾Log是否存在,不存在進行建立 os.mkdir(log_path) if not os.path.exists(filename): #判斷日誌檔案是否存在,不存在進行建立 with open(filename, mode='w', encoding='utf-8') as ff:
print("日誌檔案建立成功!")
p_path=Projectpath() #呼叫類
2)使用路徑物件結合loguru使用
import loguru
from set_path import p_path
if __name__=='__main__':
logger.add(sink=p_path.filename, rotation='00:00', encoding='utf-8')
logger.info('1020測試')
4、roation配置
4.1、配置根據檔案大小輸出日誌
logger.add('runtime_{time}.log', rotation="500 MB") #配置檔案大小為500MB,超過會自動生成一個新日誌檔案
4.2、配置根據時間輸出日誌
logger.add('runtime_{time}.log', rotation='00:00') #設定每天零點建立一個日誌檔案 logger.add('runtime_{time}.log', rotation='1 week') #設定每隔一週建立一個日誌檔案
5、retention配置(配置日誌最長保留時間)
logger.add('runtime.log', retention='7 days') #配置日誌檔案最長保留時間為7天
6、compression 配置(配置日誌檔案為壓縮格式)
logger.add('runtime.log', compression='zip') #設定檔案格式壓縮為zip,節省空間
7、traceback(報錯回溯)
使用裝飾器,直接在函式或類前面加上@logger.catch
這裡舉例:
@logger.catch def div(x,y): return x/y test=div(4,0)
若執行報錯,在日誌中會出現tarceback資訊,顯示效果圖如下: