iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >PythonLog文件大小设置及备份的方法
  • 432
分享到

PythonLog文件大小设置及备份的方法

2024-04-02 19:04:59 432人浏览 薄情痞子

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

摘要

一、配置文件大小及数量 日志文件代码需要引入RotatingFileHandler方法,如下: from logging.handlers import RotatingFile

一、配置文件大小及数量

日志文件代码需要引入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 logging
import os
import colorlog
from logging.handlers import RotatingFileHandler
from datetime import datetime

cur_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文件大小设置及备份的文章就介绍到这了,更多相关Python Log文件备份内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: PythonLog文件大小设置及备份的方法

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

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

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

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

下载Word文档
猜你喜欢
  • PythonLog文件大小设置及备份的方法
    一、配置文件大小及数量 日志文件代码需要引入RotatingFileHandler方法,如下: from logging.handlers import RotatingFile...
    99+
    2024-04-02
  • Python Log文件大小设置及备份的方法是什么
    本篇内容介绍了“Python Log文件大小设置及备份的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、配置文件大小及...
    99+
    2023-06-21
  • html设置文本域大小的方法
    这篇文章主要介绍了html设置文本域大小的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。html设置文本域大小的方法:首先新建html页面,添加以个label标签和一个i...
    99+
    2023-06-08
  • IIS 7 中设置文件上传大小限制设置方法
    在IIS 6.0中设置文件上传大小的方法,就是配置如下节点: 复制代码 代码如下:<system.web><httpRuntime maxRequestLength...
    99+
    2022-11-15
    文件大小 大小限制
  • navicat设置定时备份的方法
    小编给大家分享一下navicat设置定时备份的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体步骤如下:1、点击备份--&...
    99+
    2024-04-02
  • html文本区域大小的设置方法
    这篇文章主要介绍html文本区域大小的设置方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 在html中,可以使用textarea标签的cols和row...
    99+
    2024-04-02
  • mysql导入备份文件的方法
    这篇文章主要介绍mysql导入备份文件的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!数据迁移、恢复,就要用到备份了。使用mysqldump导出来的基本都是sql数据句,可以直接...
    99+
    2024-04-02
  • cad备份文件的查找方法
    小编给大家分享一下cad备份文件的查找方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!cad备份文件的查找方法:首先查找CAD文件存储内是否有bak文件;然后找...
    99+
    2023-06-06
  • Linux查看文件及目录大小的方法
    这篇文章给大家介绍Linux查看文件及目录大小的方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在Linux系统中使用后df命令可以查看目录的相关情况,但是df对文件没有作用,可以使用du查看文件的相关属性。应用场景...
    99+
    2023-06-28
  • 【备份】RMAN中对控制文件的几种备份方法
    控制文件对于Oracle数据库来说是至关重要的,这里简单的介绍几种在RMAN中对控制文件的备份方法。1.进入RMAN命令行界面secooler@secDB /oracle/oradata$ rman target /Recovery Man...
    99+
    2023-06-06
  • 轻松备份Windows活动目录的方法及使用的硬件设备
    因为突然停电损害域控制器的所有驱动器,使你丢失了多年工作的成果,或者一台域控制器的崩溃,对于网络管理员而言,无疑是一场恶梦,那么活动目录应该如何来备份呢xp系统之家小编就给大家讲解这一问题,在讲解这一问题之前,你首先要了...
    99+
    2023-06-03
    Windows 备份 活动目录 方法 硬件 活动 目录 设备
  • win7自动备份文件夹的方法
    本篇内容主要讲解“win7自动备份文件夹的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win7自动备份文件夹的方法”吧!具体操作:按下“Win+R”键,打开运行,在如下窗口中输入cmd打开...
    99+
    2023-06-27
  • css设置div大小的方法
    这篇文章主要介绍“css设置div大小的方法”,在日常操作中,相信很多人在css设置div大小的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css设置div大小的方法”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-14
  • MediaWiki上传文件大小设置
    MediaWiki默认最大上传文件大小为2M,碰到文件较大需要修改这个限制,需要改为8M。 使用docker运行的MediaWiki,默认是没有php.ini这个文件的。默认的php配置文件路径为:/usr/local/etc/p...
    99+
    2023-01-31
    文件大小 上传 MediaWiki
  • windows7系统自动备份设置方法图文教程
    本文看看自动备份设置。 一、Windows 7自动备份设置向导1、打开系统备份和还原设置依次打开“控制面板”-》“系统和安全”-》“备份和还 原”,...
    99+
    2023-05-30
    win7 自动备份 备份 设置 方法 图文 系统
  • docker之如何设置日志文件大小及个数
    目录docker设置日志文件大小及个数容器范围内全局范围内参数说明查出Docker容器日志并删除脚本docker设置日志文件限制最多3个,最大5M总结 docker设置日志...
    99+
    2023-05-19
    docker设置日志文件 docker设置日志文件大小 docker设置日志文件个数
  • 设置密码保护的SqlServer数据库备份文件与恢复文件的方法是什么
    今天就跟大家聊聊有关设置密码保护的SqlServer数据库备份文件与恢复文件的方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。设置密码保护S...
    99+
    2024-04-02
  • 设置python字体大小的方法
    小编给大家分享一下设置python字体大小的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python字体大小设置的方法:首先打开Python,在工具栏中单击...
    99+
    2023-06-06
  • css中input大小的设置方法
    这篇文章主要介绍css中input大小的设置方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!css的基本语法是什么css的基本语法是:1、css规则由选择器和一条或多条声明两个部分构成;2、选择器通常是需要改变样式...
    99+
    2023-06-14
  • JavaScript设置图片大小的方法
    本篇内容介绍了“JavaScript设置图片大小的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作