Python Log文件大小设置及备份的方法是什么
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,本篇内容介绍了"Python Log文件大小设置及备份的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2025年02月04日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安全错误
数据库的锁怎样保障安全
邮件服务器不支持密码鉴定
数据库 日语翻译
和网络技术有关的参考文献
绵阳网络安全攻防战
用公式编辑数据库
服务器注销后
嵌入式软件开发会有中年危机吗
产品网络安全最关键的因素是
键值数据库键值对是唯一的吗
搜索不到服务器的打印机
先进软件开发费用
阿里云服务器 升级
荆门专业的软件开发企业
服务器失去响应
ibm 服务器sn号
大学生网络技术应用培训班
大型数据库管理系统名称
图片文件上传服务器
转发服务器 上youtube
正版服务器
中职计算机网络技术教资
一流网络安全xueyuan
搜索不到服务器的打印机
软件开发主要的课程
恒生互联网科技指数实时市盈率
pb软件开发怎么使用
联盟单边服务器怀旧服
广州黄埔网络安全知识点
鼠标宏软件开发教程
数据库运用和信息管理特点