python (logging) 日志按日期、大小回滚的操作

下面是 Python 日志按日期、大小回滚的操作的完整攻略。

一、使用 logging 模块配置日志

在 Python 中,通常使用 logging 模块来记录日志。首先,我们需要通过 logging.basicConfig() 方法配置 logging 模块,以便在后续使用中直接调用。具体配置方式如下:

import logging

logging.basicConfig(filename='myapp.log', level=logging.INFO)

以上代码将设置日志存储路径为 myapp.log,并将日志的输出级别设置为 INFO。输出级别详细如下:

  • logging.CRITICAL 50
  • logging.ERROR 40
  • logging.WARNING 30
  • logging.INFO 20
  • logging.DEBUG 10
  • logging.NOTSET 0

二、按日期回滚日志

日志按日期回滚,一般有两种方式:

  1. 分割日志文件

代码示例:

import logging
from logging.handlers import TimedRotatingFileHandler

log_filename = "app.log"
logger = logging.getLogger("app_logger")
logger.setLevel(logging.INFO)

handler = TimedRotatingFileHandler(filename=log_filename, when="d", interval=1, backupCount=7)
handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(levelname)s - %(module)s - %(message)s"))

logger.addHandler(handler)

logger.info("This is a info message.")

在以上代码中,我们首先设置了日志存储文件名 app.log,代码分别如下:

log_filename = "app.log"

接下来,我们设置了 logging 模块的日志级别为 INFO(20),代码如下:

logger.setLevel(logging.INFO)

通过 TimedRotatingFileHandler 类设置日志的切割格式,代码如下:

handler = TimedRotatingFileHandler(filename=log_filename, when="d", interval=1, backupCount=7)

when 参数中,我们设置了按日切割日志文件。另外,多了一个 backupCount 参数,表示保留最近 7 个日志文件,其余日志将被删除。

  1. 使用日志回滚模块

代码示例:

import logging
import logging.handlers

logger = logging.getLogger("app_logger")
logger.setLevel(logging.INFO)
handler = logging.handlers.TimedRotatingFileHandler(
    filename="myapp.log",
    when="D",
    interval=1,
    backupCount=7
)
logger.addHandler(handler)

logger.info("This is a info message.")

在以上代码中,我们首先设置了日志存储文件名 myapp.log,代码分别如下:

handler = logging.handlers.TimedRotatingFileHandler(
    filename="myapp.log",
    when="D",
    interval=1,
    backupCount=7
)

接下来,我们设置了 logging 模块的日志级别为 INFO(20),代码如下:

logger.setLevel(logging.INFO)

通过 TimedRotatingFileHandler 类设置日志的切割格式,代码如下:

handler = logging.handlers.TimedRotatingFileHandler(
    filename="myapp.log",
    when="D",
    interval=1,
    backupCount=7
)

when 参数中,我们同样设置了按日切割日志文件。另外,backupCount 参数表示保留最近 7 个日志文件,其余日志将被删除。

三、按文件大小回滚日志

日志按文件大小回滚,也有两种方式:

  1. 分割日志文件

代码示例:

import logging
from logging.handlers import RotatingFileHandler

log_filename = "app.log"
logger = logging.getLogger("app_logger")
logger.setLevel(logging.INFO)

handler = RotatingFileHandler(filename=log_filename, maxBytes=1024*1024, backupCount=7)
handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(levelname)s - %(module)s - %(message)s"))

logger.addHandler(handler)

logger.info("This is a info message.")

在以上代码中,我们首先设置了日志存储文件名 app.log,代码分别如下:

log_filename = "app.log"

接下来,我们设置了 logging 模块的日志级别为 INFO(20),代码如下:

logger.setLevel(logging.INFO)

然后,我们通过 RotatingFileHandler 类设置日志的切割格式。maxBytes 参数指定了单个日志文件的最大大小,单位为字节;backupCount 参数指定了保存的日志文件数目。当日志文件大小达到 maxBytes 参数时,会按照 backupCount 参数的数目进行备份,代码如下:

handler = RotatingFileHandler(filename=log_filename, maxBytes=1024*1024, backupCount=7)
  1. 使用日志回滚模块

代码示例:

import logging
from logging.handlers import RotatingFileHandler

logger = logging.getLogger("app_logger")
logger.setLevel(logging.INFO)

handler = RotatingFileHandler(
    filename="myapp.log",
    mode="a",
    maxBytes=1024,
    backupCount=7,
    encoding="utf-8"
)
logger.addHandler(handler)

logger.info("This is a info message.")

在以上代码中,我们首先设置了日志存储文件名 myapp.log,代码分别如下:

handler = RotatingFileHandler(
    filename="myapp.log",
    mode="a",
    maxBytes=1024,
    backupCount=7,
    encoding="utf-8"
)

接下来,我们设置了 logging 模块的日志级别为 INFO(20),代码如下:

logger.setLevel(logging.INFO)

然后,我们通过 RotatingFileHandler 类设置日志的切割格式。maxBytes 参数指定了单个日志文件的最大大小,单位为字节;backupCount 参数指定了保存的日志文件数目。当日志文件大小达到 maxBytes 参数时,会按照 backupCount 参数的数目进行备份,代码如下:

handler = RotatingFileHandler(
    filename="myapp.log",
    mode="a",
    maxBytes=1024,
    backupCount=7,
    encoding="utf-8"
)

以上为按日期、文件大小回滚日志的 Python 实现攻略。如果需要进一步了解 logging 模块的更多知识,可以参考 Python 官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python (logging) 日志按日期、大小回滚的操作 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 怎么使用pipenv管理你的python项目

    怎么使用pipenv管理你的Python项目 本攻略将介绍如何使用pipenv管理你的Python项目。pipenv是一个Python包管理器,它可以帮助我们管理项目依赖和虚拟环境。我们将使用一个示例项目进行演示,并提供两个示例代码,分别用于创建和安装依赖。 安装pipenv 在开始前,我们需要安装pipenv。我们可以使用以下命令在命令行中安装pipenv…

    python 2023年5月15日
    00
  • python实现朴素贝叶斯算法

    Python机器学习算法之朴素贝叶斯算法(Naive Bayes) 什么是朴素贝叶斯算法? 朴素贝叶算法是一种常见的分类算法,它的核心思想基于贝叶斯定理和特征条件独立假设,通过计算验概率来进行分类。在朴素贝叶斯算法中,我们通常使用极大似然估计来估计先验概率和条件概。 朴素贝叶斯算法的原理 朴素贝叶斯算法是一种基于贝叶斯定理的分类算法,它核心思想是通过计算后验…

    python 2023年5月13日
    00
  • 详解Python Matplotlib解决绘图X轴值不按数组排序问题

    下面是详解Python Matplotlib解决绘图X轴值不按数组排序问题的完整攻略。 问题描述 在使用Python库Matplotlib进行绘图时,有时候在X轴上显示的数据值不会按照原始数组中的顺序排列,从而导致绘图结果不符合预期。 解决方案 获取原始数组中的索引 解决此问题的一种方案是,先获取原始数组中每个值的索引,然后按照索引的大小顺序重新排列数组。这…

    python 2023年5月18日
    00
  • 简单的Python人脸识别系统

    简单的Python人脸识别系统 概述 Python人脸识别系统一般由以下几个模块构成: 摄像头模块:通过电脑或者外接摄像头采集照片或者视频 人脸检测模块:使用人脸检测算法从采集的照片或者视频中提取人脸图像 人脸特征提取与比对模块:对于每个人,在系统中维护一个特征向量用于表示一个人的特征,新采集到的人脸图像与系统中维护的人脸特征向量进行比对,判断是否为同一人 …

    python 2023年5月18日
    00
  • Python使用openpyxl复制整张sheet

    使用 openpyxl 复制整张 sheet 具体可以分为以下步骤: 步骤一:导入模块 首先,我们需要导入 openpyxl 模块,可以使用以下代码: import openpyxl 步骤二:打开工作簿 接下来,我们需要打开需要复制 sheet 的工作簿,可以使用以下代码: wb = openpyxl.load_workbook(‘example.xlsx’…

    python 2023年6月3日
    00
  • linux修改tomcat默认访问项目的具体步骤(必看篇)

    下面是详细讲解“Linux修改Tomcat默认访问项目的具体步骤”的攻略: 1. 查找Tomcat的配置文件 在Linux中,默认安装路径下Tomcat的配置文件位于/etc/tomcat目录下。在该目录下,有一个名为server.xml的文件,为Tomcat的主配置文件。 2. 修改Tomcat的配置文件 打开server.xml文件并查找<Host…

    python 2023年6月3日
    00
  • python3读取csv文件任意行列代码实例

    下面是详细讲解“python3读取csv文件任意行列代码实例”的完整攻略。 1. 什么是CSV文件 CSV文件(Comma-Separated Values,逗号分隔值)是一种常见的电子表格文件格式,它以文本形式存储表格数据,每一行代表一条记录,每个字段之间使用逗号分隔。由于CSV文件采用纯文本格式,所以几乎所有的电子表格软件都支持该格式,包括Excel、G…

    python 2023年6月3日
    00
  • Python实现图片转字符画的代码实例

    当你想将一张图片转换成由字符构成的艺术品时,可以使用Python编程语言来实现这个过程。这个过程包括了读取图像、将图像转换成灰度图、将灰度值映射到字符集合中,最后将结果打印出来或保存到文件中。 下面是这个过程的详细攻略: 步骤一:安装需要的库 在Python中,有很多第三方库可以用来读取和处理图像。这里我们使用 Python Imaging Library …

    python 2023年6月2日
    00
合作推广
合作推广
分享本页
返回顶部