1. 程式人生 > 程式設計 >Python中logging日誌記錄到檔案及自動分割的操作程式碼

Python中logging日誌記錄到檔案及自動分割的操作程式碼

日誌作為專案開發和執行中必備元件,python提供了內建的logging模組來完成這個工作;藉助 TimedRotatingFileHandler 可以按日期自動分割日誌,自動保留日誌檔案數量等,下面是對日誌的一個簡單封裝和測試。

import logging
import os
from logging import handlers

class Logger(object):
 # 日誌級別關係對映
 level_relations = {
 'debug': logging.DEBUG,'info': logging.INFO,'warning': logging.WARNING,'error': logging.ERROR,'critical': logging.CRITICAL
 }

 def __init__(self,filename,level='info',when='D',back_count=3,fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):
 f_dir,f_name = os.path.split(filename)
 os.makedirs(f_dir,exist_ok=True) # 當前目錄新建log資料夾
 self.logger = logging.getLogger(filename)
 format_str = logging.Formatter(fmt) # 設定日誌格式
 self.logger.setLevel(self.level_relations.get(level)) # 設定日誌級別
 sh = logging.StreamHandler() # 往螢幕上輸出
 sh.setFormatter(format_str) # 設定螢幕上顯示的格式
 th = handlers.TimedRotatingFileHandler(filename=filename,when=when,backupCount=back_count,encoding='utf-8') # 往檔案裡寫入指定間隔時間自動生成檔案的Handler
 # 例項化TimedRotatingFileHandler
 # interval是時間間隔,backupCount是備份檔案的個數,如果超過這個個數,就會自動刪除,when是間隔的時間單位,單位有以下幾種:
 # S 秒
 # M 分
 # H 小時
 # D 天
 # 'W0'-'W6' 每星期(interval=0時代表星期一:W0)
 # midnight 每天凌晨
 th.setFormatter(format_str) # 設定檔案裡寫入的格式
 self.logger.addHandler(sh) # 把物件加到logger裡
 self.logger.addHandler(th)

# 測試
if __name__ == '__main__':
 logger = Logger('./logs/2020/app.log','debug','S',5).logger
 logger.debug('debug')
 logger.info('info')
 logger.warning('警告')
 logger.error('報錯')
 logger.critical('嚴重')

 # 單獨記錄error
 err_logger = Logger('./logs/2020/error.log','error',3).logger
 err_logger.error('錯誤 error')

Python中logging日誌記錄到檔案及自動分割的操作程式碼

為了測試方便,我們將時間間隔設為秒(按秒自動命名分割檔案),多執行幾次後,會按照配置檔案數量將多餘的日誌檔案自動刪除,保留如上圖中的日誌檔案。

原文連結:https://beltxman.com/3195.html,若無特殊說明本站內容為行星帶原創,未經同意禁止轉載!

總結

到此這篇關於Python中logging日誌記錄到檔案及自動分割的文章就介紹到這了,更多相關python logging日誌記錄內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!