广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python Log文件大小设置及备份的方法是什么
  • 149
分享到

Python Log文件大小设置及备份的方法是什么

2023-06-21 21:06:22 149人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“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...,如图所示:

Python Log文件大小设置及备份的方法是什么

RotatingFileHandler方法源码,如下所示:

Python Log文件大小设置及备份的方法是什么

二、日志代码

#!/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文件大小设置及备份的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Python Log文件大小设置及备份的方法是什么

本文链接: https://www.lsjlt.com/news/300784.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python Log文件大小设置及备份的方法是什么
    本篇内容介绍了“Python Log文件大小设置及备份的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、配置文件大小及...
    99+
    2023-06-21
  • PythonLog文件大小设置及备份的方法
    一、配置文件大小及数量 日志文件代码需要引入RotatingFileHandler方法,如下: from logging.handlers import RotatingFile...
    99+
    2022-11-12
  • 云主机文件备份的方法是什么
    云主机文件备份的方法有以下几种:1. 手动备份:将需要备份的文件手动复制到云存储服务,例如云盘或对象存储。2. 自动备份:可以通过设...
    99+
    2023-09-18
    云主机
  • ManagerDB备份文件管理与异地备份的方法是什么
    本篇内容介绍了“ManagerDB备份文件管理与异地备份的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2022-10-18
  • ubuntu设置字体大小的方法是什么
    要在Ubuntu上设置字体大小,可以按照以下步骤进行操作:1. 打开“设置”应用程序。可以在应用程序列表中找到它,或者按下“Supe...
    99+
    2023-08-08
    ubuntu
  • java设置窗口大小的方法是什么
    在Java中,可以使用`setSize()`方法来设置窗口的大小。以下是一些示例代码:```javaimport javax.swi...
    99+
    2023-10-07
    java
  • 设置密码保护的SqlServer数据库备份文件与恢复文件的方法是什么
    今天就跟大家聊聊有关设置密码保护的SqlServer数据库备份文件与恢复文件的方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。设置密码保护S...
    99+
    2022-10-19
  • shell判断文件大小的方法是什么
    在shell中判断文件大小的方法是使用test命令或方括号表达式,并结合文件大小的比较符号进行判断。常用的文件大小比较符号如下:- ...
    99+
    2023-05-13
    shell判断文件大小
  • Linux系统文件备份的具体方法是什么
    本篇文章给大家分享的是有关Linux系统文件备份的具体方法是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在Linux系统中如何进行文件备份呢?  #工...
    99+
    2023-06-28
  • 限制 Apache日志文件大小的方法是什么
    限制 Apache日志文件大小的方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。access.log,件在 WEB 服务器运行一段时间之后会达到几十兆甚...
    99+
    2023-06-05
  • SVN忽略文件设置的方法是什么
    在SVN中,要忽略某些文件或文件夹,可以通过以下方法进行设置:1. 使用svn:ignore属性:可以针对单个文件或文件夹设置忽略规...
    99+
    2023-09-22
    SVN
  • Linux操作系统定时备份文件的方法是什么
    Linux操作系统定时备份文件的方法是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。对于站长来说,养成良好的备份习惯是非常重要的。无论性能多么好的美国服务器,都有出现问题的...
    99+
    2023-06-05
  • linux设置共享文件夹的方法是什么
    在Linux中,设置共享文件夹有多种方法,下面是两种常用的方法:1. 使用Samba共享文件夹:- 首先,确保已经安装了Samba软...
    99+
    2023-09-13
    linux
  • linux创建文件夹并设置权限的方法是什么
    在Linux下创建文件夹并设置权限的方法如下:1. 创建文件夹:使用mkdir命令创建文件夹,例如:mkdir myfolder其中...
    99+
    2023-05-17
    linux创建文件夹 linux
  • python中编写config文件并及时更新的方法是什么
    这篇“python中编写config文件并及时更新的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python中编...
    99+
    2023-07-05
  • php设置文件路径的常见问题和解决方法是什么
    这篇文章主要介绍了php设置文件路径的常见问题和解决方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php设置文件路径的常见问题和解决方法是什么文章都会有所收获,下面我们一起来看看吧。相对路径和绝对路径...
    99+
    2023-07-05
  • Intellij idea代码提示忽略字母大小写和常用快捷键设置的方法是什么
    本篇内容介绍了“Intellij idea代码提示忽略字母大小写和常用快捷键设置的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作