python日志内容存储到文件里_Python中如何实现将logging日志保存到文件中
Python中如何實現將logging日志保存到文件中
發布時間:2020-11-09 17:03:14
來源:億速云
閱讀:66
今天就跟大家聊聊有關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', 'S', 3).logger
err_logger.error('錯誤 error')
為了測試方便,我們將時間間隔設為秒(按秒自動命名分割文件),多運行幾次后,會按照配置文件數量將多余的日志文件自動刪除,保留如上圖中的日志文件。
看完上述內容,你們對Python中如何實現將logging日志保存到文件中有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
總結
以上是生活随笔為你收集整理的python日志内容存储到文件里_Python中如何实现将logging日志保存到文件中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git如何切换分支_如何让 Jenkin
- 下一篇: java list最大容量_Java 性