python更方便高效的日志管理loguru


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

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM