广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python 限制输出日志的大小的方法
  • 638
分享到

Python 限制输出日志的大小的方法

2023-06-14 05:06:47 638人浏览 薄情痞子

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

摘要

这篇文章主要讲解了“python 限制输出日志的大小的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python 限制输出日志的大小的方法”吧!限制输出日志的大小有多种方法,最优雅的莫过

这篇文章主要讲解了“python 限制输出日志的大小的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python 限制输出日志的大小的方法”吧!

限制输出日志的大小有多种方法,最优雅的莫过于直接使用rotate机制,这种机制广泛存在于各种编程语言,Python也不例外。其次,还可以使用mount挂载一个文件,作为日志存储的位置,因为文件大小是有限的,所以日志的大小也被限制。还有可以用ulimit。

RotatingFileHandler

RotatingFileHandler是logging.handler的一种,在python docs中,这个类的构造函数示例用法如下

class logging.handlers.RotatingFileHandler(filename, mode=‘a', maxBytes=0, backupCount=0, encoding=None, delay=False)

参数

filename 输出的文件名,如果使用Python 3.6或者更新版本的Python,filename可以是一个Path对象,Path对象可以让你更优雅地操作文件路径,它是Python新增的特性。

mode 有"w"和"a",如果是w,那么每次输出日志,都会覆盖之前已经存在的日志,从第一行开始输出,如果是a,会保留之前的日志,在之前的日志后输出。

maxBytes 日志最大的大小,单位是字节

backupCount 如果日志大小达到maxBytes,会将旧日志加上.1或.2这样的后缀,与filename区分,并在新的filename文件第一行开始输出。如果为1,则有最多有一个旧日志的备份。

encoding 字符编码,常用的有utf-8

import loggingfrom logging.handlers import RotatingFileHandlerlog = logging.getLogger()handler = RotatingFileHandler("test", "a", 4096, 2, "utf-8")log.addHandler(handler)#更高级的logging特性log.setLevel(logging.INFO) #设置过滤的日志等级fORMatter = logging.Formatter("%(asctime)s %(levelname)s: %(message)")log.setFormatter(formatter) #设置日志输出的格式

Mount

先创建文件,并格式化成ext4文件系统

dd if=/dev/zero of=./logfs bs=1M count=4mkfs.ext4 ./logfs
mkdir logsudo mount -t ext4 ./logfs ./logpython test.py 2>./log/test.log

需要注意的是,这种方法可能有权限问题,如果python程序权限不够,需要更改挂载后log目录的权限,使用sudo chmod 777 -R log

补充:

python控制日志级别输出,可进行全局限流,可控制控制台输出,可用于线上配置,进行日志的简单记录

# coding=utf-8import loggingimport datetimeimport osCONSOLE = TrueLEVEL = "DEBUG"# log/2020-09/2020-09-27_APPLICATioN_NAME.logAPPLICATION_NAME = "APPLICATION_NAME"# 只生成GBK的日志文件class RecordLog: def __init__(self):  """  1、控制日志是否在控制台中打印  2、控制日志输出的级别  """  # 设置是否控制台打印  self._console = CONSOLE  # 等级字典  self._level_dict = {'DEBUG':1,'INFO':2,'WARNING':3,'ERROR':4,'CRITICAL':5}  # 设置当前支持的日志等级  self._current_level_num = self._level_dict[LEVEL] def get_log_file_name(self,):  """  创建日志文件夹,创建或调用日志文件,日志存储  :return: log/log_folder(月份)/log_file(每天的log)  """  now = str(datetime.datetime.now())  log_folder = now[:7]  log_file = now[:10] + "_" + APPLICATION_NAME + ".log"  if os.path.exists("log/" + log_folder):   pass  else:   os.makedirs("log/" + log_folder)  return "log/" + log_folder + "/" + log_file def log_content(self, content='开始记录',level="DEBUG"):  """  记录日志  :param content: 记录的内容  :param level: DEBUG, INFO, WARNING, ERROR, CRITICAL  :return:  """  LOG_FILE_NAME = self.get_log_file_name()  now1 = datetime.datetime.now()  now_date = now1.strftime("%Y-%m-%d-%H:%M:%S")  text = " %s %s -- %s" % (level, now_date, content)  if level in ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']:   level_num = self._level_dict[level]   # 控制台输出   if self._console:    print(text)   logger = logging.getLogger()   fh = logging.FileHandler(filename=LOG_FILE_NAME, encoding="utf-8", mode="a")   # formatter = logging.Formatter("%(asctime)s - %(name)s-%(levelname)s %(message)s")   # fh.setFormatter(formatter)   logger.addHandler(fh)   # 设置日志等级   if "DEBUG" == level and level_num >= self._current_level_num:    logger.setLevel(logging.DEBUG)   elif "INFO" == level and level_num >= self._current_level_num:    logger.setLevel(logging.INFO)   elif "WARNING" == level and level_num >= self._current_level_num:    logger.setLevel(logging.WARNING)   elif "ERROR" == level and level_num >= self._current_level_num:    logger.setLevel(logging.ERROR)   else:    logger.setLevel(logging.CRITICAL)   logger.info(text)  else:   raise Exception('日志等级传参错误: %s ; 正确格式为:DEBUG, INFO, WARNING, ERROR, CRITICAL'%level)if __name__ == '__main__': # log = RecordLog() log.log_content(level='DEBUG')

感谢各位的阅读,以上就是“Python 限制输出日志的大小的方法”的内容了,经过本文的学习后,相信大家对Python 限制输出日志的大小的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Python 限制输出日志的大小的方法

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

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

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

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

下载Word文档
猜你喜欢
  • Python 限制输出日志的大小的方法
    这篇文章主要讲解了“Python 限制输出日志的大小的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python 限制输出日志的大小的方法”吧!限制输出日志的大小有多种方法,最优雅的莫过...
    99+
    2023-06-14
  • Python 如何限制输出日志的大小
    限制输出日志的大小有多种方法,最优雅的莫过于直接使用rotate机制,这种机制广泛存在于各种编程语言,Python也不例外。其次,还可以使用mount挂载一个文件,作为日志存储的位置...
    99+
    2022-11-11
  • 限制 Apache日志文件大小的方法是什么
    限制 Apache日志文件大小的方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。access.log,件在 WEB 服务器运行一段时间之后会达到几十兆甚...
    99+
    2023-06-05
  • python输出小数精度控制的方法
    目录一、要求较小的精度1.round()内置方法2. 使用格式化二、要求超过17位的精度分析1. 使用格式化(不推荐)2. 高精度使用decimal模块,配合getcontext三、...
    99+
    2022-11-11
  • log4j控制日志输出文件名称的两种方式小结
    目录log4j控制日志输出文件名称1. 第一种方式2. 第二种方式(这种方式亲测正确)如何随心所欲地自定义log4j输出格式log4j控制日志输出文件名称 1. 第一种方式 在类对象...
    99+
    2022-11-12
  • Node输出日志的正确方法示例
    目录背景使用 Winston 进行日志记录安装和使用 WinstonWinston 的日志级别Winston 的格式化器Winston 的传输器Winston的实践接入es注意事项背...
    99+
    2023-03-06
    Node输出日志 Node 日志
  • 怎么在Python中使用handler方法输出日志
    今天就跟大家聊聊有关怎么在Python中使用handler方法输出日志,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;...
    99+
    2023-06-14
  • Node输出日志的正确方法是什么
    本篇内容主要讲解“Node输出日志的正确方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node输出日志的正确方法是什么”吧!背景每个程序员都喜欢在有问题的代码中插入一些日志的方法来帮助...
    99+
    2023-07-05
  • Python 和 Linux 容器:如何处理大量的日志输出?
    在现代软件开发中,日志记录是至关重要的。它可以帮助开发人员更好地了解他们的应用程序在不同环境下的行为。但是,当应用程序开始产生大量的日志输出时,处理和管理这些日志就变得非常困难。在本文中,我们将介绍一些使用Python和Linux容器来处...
    99+
    2023-11-09
    linux 容器 日志
  • linux重定向输出日志的方法是什么
    在Linux中,重定向输出日志有以下几种方法:1. 使用">"符号将命令的输出重定向到文件中,例如:`command > file....
    99+
    2023-08-18
    linux
  • SpringBoot日志的配置及输出的方法是什么
    这篇文章主要介绍“SpringBoot日志的配置及输出的方法是什么”,在日常操作中,相信很多人在SpringBoot日志的配置及输出的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoo...
    99+
    2023-06-21
  • logback输出日志屏蔽quartz的debug等级日志方式
    目录logback输出日志屏蔽quartz的debug等级日志解决方法quartz关闭DBUG日志把他的log级别改成 ERROR或者索性logback输出日志屏蔽quartz的de...
    99+
    2022-11-12
  • Shell执行脚本并输出日志文件的方法
    shell 错误输出重定向到标准输出 ./tmp/test.sh > /tmp/test.log 2>&1 >和<是文件重定向符。那么1和2是什么? ...
    99+
    2022-11-13
    Shell执行脚本 Shell输出日志文件
  • shell脚本实现分日志级别输出的方法
    shell脚本如何优雅的记录日志信息,下面让我们一步一步,让shell脚本的日志也变得高端起来,实现如下功能 ①设定日志级别,实现可以输出不同级别的日志信息,方便调试 ②日志格式类似为:[日志级别] 时间...
    99+
    2022-06-04
    脚本 级别 方法
  • C#实现UI控件输出日志的方法详解
    目录文章描述开发环境开发工具实现代码实现效果文章描述 一般情况下,我们的日志文件是用来记录一些关键操作或者异常,并且是后台存储,并不对外开放的;但是也有些时候,特别是做一些小工具程序...
    99+
    2022-11-13
    C# UI控件输出日志 C# 输出日志
  • 解析springboot集成AOP实现日志输出的方法
    开发接口系统中主要的一环就是日志输出,如果系统出现问题,日志能帮我们去定位问题,最常见的日志是调用方 所调用的IP 接口地址 对应方法 参数值 以及接口方接收到请求 所返回的参数。如...
    99+
    2022-11-12
  • php文件上传大小限制的方法
    这篇文章主要介绍了php文件上传大小限制的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种...
    99+
    2023-06-14
  • phpmyadmin修改文件大小限制的方法
    这期内容当中小编将会给大家带来有关phpmyadmin修改文件大小限制的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。网站搬家的时候碰到的这个问题,因为数据一直是使用...
    99+
    2022-10-18
  • 关于log4j2的异步日志输出方式
    目录log4j2的异步日志输出方式第一种实现异步方式AsyncAppender第二种实现异步方式AsyncLoggerlog4j2异步注意事项log4j2异步类型小提示log4j2的...
    99+
    2022-11-12
  • JAVA中使用log4j及slf4j进行日志输出的方法
    JAVA中输出日志比较常用的是log4j,这里讲下log4j的配置和使用方法,以及slf4j的使用方法。 一、下载log4j的架包,并导入项目中,如下: 二、创建log4j.properties配置文件 1、log4j配置文件的位置...
    99+
    2023-10-06
    java log4j 单元测试
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作