Python中logging日志記錄到文件及自動分割的操作代碼
日志作為項目開發和運行中必備組件,python提供了內置的logging模塊來完成這個工作;借助 TimedRotatingFileHandler 可以按日期自動分割日志,自動保留日志文件數量等,下面是對日志的一個簡單封裝和測試。
import loggingimport osfrom logging import handlersclass 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’)
為了測試方便,我們將時間間隔設為秒(按秒自動命名分割文件),多運行幾次后,會按照配置文件數量將多余的日志文件自動刪除,保留如上圖中的日志文件。
原文鏈接:https://beltxman.com/3195.html,若無特殊說明本站內容為行星帶原創,未經同意禁止轉載!
總結
到此這篇關于Python中logging日志記錄到文件及自動分割的文章就介紹到這了,更多相關python logging日志記錄內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
相關文章:
