Python Log文件大小设置及备份的方法是什么
发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,本篇内容介绍了"Python Log文件大小设置及备份的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2025年11月16日Python Log文件大小设置及备份的方法是什么
本篇内容介绍了"Python Log文件大小设置及备份的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一、配置文件大小及数量
日志文件代码需要引入RotatingFileHandler方法,如下:
from logging.handlers import RotatingFileHandler
配置文件大小及数量,比如:"设置写入文件,如果文件超过1M大小时,切割日志文件,仅保留3个文件",如下所示:
# 写入文件,如果文件超过1M大小时,切割日志文件,仅保留3个文件 logger_handler = RotatingFileHandler(filename=log_path, maxBytes=1 * 1024 * 1024, backupCount=3, encoding='utf-8')
若文件大小超过1M大小时,就切割日志文件,仅保留3个文件,并且文件的格式为app.log1、app.log2...,如图所示:
RotatingFileHandler方法源码,如下所示:
二、日志代码
#!/usr/bin/env python# -*- coding:utf-8 -*-"""------------------------------------# @FileName :handle_log.py# @Time :2020/8/31 19:59# @Author :xieyuanzuo# @description :------------------------------------"""import loggingimport osimport colorlogfrom logging.handlers import RotatingFileHandlerfrom datetime import datetimecur_path = os.path.dirname(os.path.realpath(__file__)) # 当前项目路径log_path = os.path.join(os.path.dirname(cur_path), 'logs') # log_path为存放日志的路径if not os.path.exists(log_path): os.mkdir(log_path) # 若不存在logs文件夹,则自动创建log_colors_config = { # 终端输出日志颜色配置 'DEBUG': 'white', 'INFO': 'cyan', 'WARNING': 'yellow', 'ERROR': 'red', 'CRITICAL': 'bold_red',}default_formats = { # 终端输出格式 'color_format': '%(log_color)s%(asctime)s-%(name)s-%(filename)s-[line:%(lineno)d]-%(levelname)s-[日志信息]: %(message)s', # 日志输出格式 'log_format': '%(asctime)s-%(name)s-%(filename)s-[line:%(lineno)d]-%(levelname)s-[日志信息]: %(message)s'}class HandleLog: """ 先创建日志记录器(logging.getLogger),然后再设置日志级别(logger.setLevel), 接着再创建日志文件,也就是日志保存的地方(logging.FileHandler),然后再设置日志格式(logging.Formatter), 最后再将日志处理程序记录到记录器(addHandler) """ def __init__(self): self.__now_time = datetime.now().strftime('%Y-%m-%d') # 当前日期格式化 self.__all_log_path = os.path.join(log_path, self.__now_time + "-all" + ".log") # 收集所有日志信息文件 self.__error_log_path = os.path.join(log_path, self.__now_time + "-error" + ".log") # 收集错误日志信息文件 self.__logger = logging.getLogger() # 创建日志记录器 self.__logger.setLevel(logging.DEBUG) # 设置默认日志记录器记录级别 @staticmethod def __init_logger_handler(log_path): """ 创建日志记录器handler,用于收集日志 :param log_path: 日志文件路径 :return: 日志记录器 """ # 写入文件,如果文件超过1M大小时,切割日志文件,仅保留3个文件 logger_handler = RotatingFileHandler(filename=log_path, maxBytes=1 * 1024 * 1024, backupCount=3, encoding='utf-8') return logger_handler @staticmethod def __init_console_handle(): """创建终端日志记录器handler,用于输出到控制台""" console_handle = colorlog.StreamHandler() return console_handle def __set_log_handler(self, logger_handler, level=logging.DEBUG): """ 设置handler级别并添加到logger收集器 :param logger_handler: 日志记录器 :param level: 日志记录器级别 """ logger_handler.setLevel(level=level) self.__logger.addHandler(logger_handler) def __set_color_handle(self, console_handle): """ 设置handler级别并添加到终端logger收集器 :param console_handle: 终端日志记录器 :param level: 日志记录器级别 """ console_handle.setLevel(logging.DEBUG) self.__logger.addHandler(console_handle) @staticmethod def __set_color_formatter(console_handle, color_config): """ 设置输出格式-控制台 :param console_handle: 终端日志记录器 :param color_config: 控制台打印颜色配置信息 :return: """ formatter = colorlog.ColoredFormatter(default_formats["color_format"], log_colors=color_config) console_handle.setFormatter(formatter) @staticmethod def __set_log_formatter(file_handler): """ 设置日志输出格式-日志文件 :param file_handler: 日志记录器 """ formatter = logging.Formatter(default_formats["log_format"], datefmt='%a, %d %b %Y %H:%M:%S') file_handler.setFormatter(formatter) @staticmethod def __close_handler(file_handler): """ 关闭handler :param file_handler: 日志记录器 """ file_handler.close() def __console(self, level, message): """构造日志收集器""" all_logger_handler = self.__init_logger_handler(self.__all_log_path) # 创建日志文件 error_logger_handler = self.__init_logger_handler(self.__error_log_path) console_handle = self.__init_console_handle() self.__set_log_formatter(all_logger_handler) # 设置日志格式 self.__set_log_formatter(error_logger_handler) self.__set_color_formatter(console_handle, log_colors_config) self.__set_log_handler(all_logger_handler) # 设置handler级别并添加到logger收集器 self.__set_log_handler(error_logger_handler, level=logging.ERROR) self.__set_color_handle(console_handle) if level == 'info': self.__logger.info(message) elif level == 'debug': self.__logger.debug(message) elif level == 'warning': self.__logger.warning(message) elif level == 'error': self.__logger.error(message) elif level == 'critical': self.__logger.critical(message) self.__logger.removeHandler(all_logger_handler) # 避免日志输出重复问题 self.__logger.removeHandler(error_logger_handler) self.__logger.removeHandler(console_handle) self.__close_handler(all_logger_handler) # 关闭handler self.__close_handler(error_logger_handler) def debug(self, message): self.__console('debug', message) def info(self, message): self.__console('info', message) def warning(self, message): self.__console('warning', message) def error(self, message): self.__console('error', message) def critical(self, message): self.__console('critical', message)log = HandleLog()if __name__ == '__main__': for i in range(50000): log.info("这是日志信息") log.debug("这是debug信息") log.warning("这是警告信息") log.error("这是错误日志信息") log.critical("这是严重级别信息")"Python Log文件大小设置及备份的方法是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
日志
文件
记录器
信息
大小
格式
级别
输出
终端
这是
方法
收集器
配置
控制台
路径
控制
备份
代码
内容
数量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
传奇服务器充值币种
shell循环数据库表
linux服务器安全工具
互联网科技狗
番禺网络数据库怎么样
浙江嘉兴电信服务器地址云主机
nosql数据库技术及其应用
确保军事信息网络安全对策
数据库并发解决方案
北京中兴网络技术有限公司
防范保密网络安全心得体会
金铲铲之战崇敬法衣服务器
北京格方网络技术有限公司
神木软件开发文档
固态硬盘无法写入数据库
大数据中心一般需要多少台服务器
安卓软件开发论文
数据库 查表数据
e语言数据库教程
钉钉机器人给服务器发送指令
wow10区都有什么服务器
通讯软件开发是什么行业
更新数据库所有数据类型
金戈邦互联网科技
南方电网软件开发工资
全国农业技术人才数据库
小米数据库 网盘
梁溪区项目软件开发优势
软件开发 不是技术
网络技术有限公司网站模板