Python中l(wèi)ogging日志記錄到文件及自動(dòng)分割的操作代碼
日志作為項(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')

為了測(cè)試方便,我們將時(shí)間間隔設(shè)為秒(按秒自動(dòng)命名分割文件),多運(yùn)行幾次后,會(huì)按照配置文件數(shù)量將多余的日志文件自動(dòng)刪除,保留如上圖中的日志文件。
原文鏈接:https://beltxman.com/3195.html,若無特殊說明本站內(nèi)容為行星帶原創(chuàng),未經(jīng)同意禁止轉(zhuǎn)載!
總結(jié)
到此這篇關(guān)于Python中l(wèi)ogging日志記錄到文件及自動(dòng)分割的文章就介紹到這了,更多相關(guān)python logging日志記錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Python使用turtle庫(kù)畫任意圖的問題
這篇文章主要介紹了Python turtle庫(kù)畫任意圖,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
pytorch實(shí)現(xiàn)線性回歸以及多元回歸
這篇文章主要為大家詳細(xì)介紹了pytorch實(shí)現(xiàn)線性回歸以及多元回歸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
python 獲取一個(gè)值在某個(gè)區(qū)間的指定倍數(shù)的值方法
今天小編就為大家分享一篇python 獲取一個(gè)值在某個(gè)區(qū)間的指定倍數(shù)的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11
使用Python連接MySQL數(shù)據(jù)庫(kù)進(jìn)行編程的步驟詳解
Python數(shù)據(jù)庫(kù)編程可以使用多種模塊與API,例如SQLite、MySQL、PostgreSQL等,本教程將重點(diǎn)介紹使用Python連接MySQL數(shù)據(jù)庫(kù)進(jìn)行編程,需要的朋友可以參考下2023-06-06
利用Python中unittest實(shí)現(xiàn)簡(jiǎn)單的單元測(cè)試實(shí)例詳解
如果項(xiàng)目復(fù)雜,進(jìn)行單元測(cè)試是保證降低出錯(cuò)率的好方法,Python提供的unittest可以很方便的實(shí)現(xiàn)單元測(cè)試,從而可以替換掉繁瑣雜亂的main函數(shù)測(cè)試的方法,將測(cè)試用例、測(cè)試方法進(jìn)行統(tǒng)一的管理和維護(hù)。本文主要介紹了利用Python中unittest實(shí)現(xiàn)簡(jiǎn)單的單元測(cè)試。2017-01-01
簡(jiǎn)單理解Python中基于生成器的狀態(tài)機(jī)
這篇文章主要介紹了簡(jiǎn)單理解Python中基于生成器的狀態(tài)機(jī),來自于IBM官方技術(shù)文檔,需要的朋友可以參考下2015-04-04
python基礎(chǔ)詳解之if循環(huán)語(yǔ)句
這篇文章主要介紹了python基礎(chǔ)詳解之if循環(huán)語(yǔ)句,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助需要的朋友可以參考下2021-04-04
Python主動(dòng)拋出異常的各種用法和場(chǎng)景分析
在Python中,我們不僅可以捕獲和處理異常,還可以主動(dòng)拋出異常,也就是以類的方式自定義錯(cuò)誤的類型和提示信息,這在編程中非常有用,下面我將詳細(xì)解釋主動(dòng)拋出異常的各種用法和場(chǎng)景,需要的朋友可以參考下2025-06-06

