對比使用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信息,顯示效果圖如下: