溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中如何實(shí)現(xiàn)將logging日志保存到文件中

發(fā)布時(shí)間:2020-11-09 17:03:14 來源:億速云 閱讀:1828 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)Python中如何實(shí)現(xiàn)將logging日志保存到文件中,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

日志作為項(xiàng)目開發(fā)和運(yùn)行中必備組件,python提供了內(nèi)置的logging模塊來完成這個(gè)工作;借助 TimedRotatingFileHandler 可以按日期自動(dòng)分割日志,自動(dòng)保留日志文件數(shù)量等,下面是對(duì)日志的一個(gè)簡(jiǎn)單封裝和測(cè)試。

import logging
import os
from logging import handlers

class Logger(object):
 # 日志級(jí)別關(guān)系映射
 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) # 當(dāng)前目錄新建log文件夾
 self.logger = logging.getLogger(filename)
 format_str = logging.Formatter(fmt) # 設(shè)置日志格式
 self.logger.setLevel(self.level_relations.get(level)) # 設(shè)置日志級(jí)別
 sh = logging.StreamHandler() # 往屏幕上輸出
 sh.setFormatter(format_str) # 設(shè)置屏幕上顯示的格式
 th = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=back_count,
      encoding='utf-8') # 往文件里寫入指定間隔時(shí)間自動(dòng)生成文件的Handler
 # 實(shí)例化TimedRotatingFileHandler
 # interval是時(shí)間間隔,backupCount是備份文件的個(gè)數(shù),如果超過這個(gè)個(gè)數(shù),就會(huì)自動(dòng)刪除,when是間隔的時(shí)間單位,單位有以下幾種:
 # S 秒
 # M 分
 # H 小時(shí)
 # D 天
 # 'W0'-'W6' 每星期(interval=0時(shí)代表星期一:W0)
 # midnight 每天凌晨
 th.setFormatter(format_str) # 設(shè)置文件里寫入的格式
 self.logger.addHandler(sh) # 把對(duì)象加到logger里
 self.logger.addHandler(th)

# 測(cè)試
if __name__ == '__main__':
 logger = Logger('./logs/2020/app.log', 'debug', 'S', 5).logger
 logger.debug('debug')
 logger.info('info')
 logger.warning('警告')
 logger.error('報(bào)錯(cuò)')
 logger.critical('嚴(yán)重')

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

Python中如何實(shí)現(xiàn)將logging日志保存到文件中

為了測(cè)試方便,我們將時(shí)間間隔設(shè)為秒(按秒自動(dòng)命名分割文件),多運(yùn)行幾次后,會(huì)按照配置文件數(shù)量將多余的日志文件自動(dòng)刪除,保留如上圖中的日志文件。

看完上述內(nèi)容,你們對(duì)Python中如何實(shí)現(xiàn)將logging日志保存到文件中有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI