Python logging日誌的自動分割

2022-04-02 23:25:38 字數 1934 閱讀 9565

python的內建的logging模組通過設定timedrotatingfilehandler進行日誌按周(w)、天(d)、時(h)、分(m)、秒(s)切割。

import

logging

import

osfrom logging import

handlers

class

logger(object):

#日誌級別關係對映

level_relations =

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('

', '

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

', '

s', 3).logger

err_logger.error(

'錯誤 error

')

Python logging日誌模組

1.日誌的級別 日誌一共分成5個等級,從低到高分別是 1 debug 2.info 3.warning 4.error 5.critical說明 這5個等級,也分別對應5種打日誌的方法 debug info warning error critical。預設的是 warning,當在warning或...

python logging日誌模組

logging模組是python的乙個標準庫模組,由標準庫模組提供日誌記錄api的關鍵好處是所有python模組都可以使用這個日誌記錄功能。所以,你的應用日誌可以將你自己的日誌資訊與來自第三方模組的資訊整合起來。1.日誌級別 logging模組預設定義了以下幾個日誌等級,開發應用程式或部署開發環境時...

python logging日誌設定

log等級,輸出格式,輸出檔名,檔案讀寫模式 logging.basicconfig level logging.debug,format asctime s filename s line lineno d levelname s message s filename log.txt filemo...