Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python如何在达到特定字节后从生成的日志文件中删除日志历史记录_Python 3.x_Logging - Fatal编程技术网

Python 3.x Python如何在达到特定字节后从生成的日志文件中删除日志历史记录

Python 3.x Python如何在达到特定字节后从生成的日志文件中删除日志历史记录,python-3.x,logging,Python 3.x,Logging,我正在使用yaml配置文件创建日志处理程序,使用logging.handlers.RotatingFileHandler,在配置文件中,我给了maxBytes 10Mb 请查找以下内容以供参考 logging: version: 1 formatters: simple: format: "%(asctime)s - %(lineno)d - %(name)s - %(levelname)s - %(funcName)s - %(message)s&qu

我正在使用yaml配置文件创建日志处理程序,使用logging.handlers.RotatingFileHandler,在配置文件中,我给了maxBytes 10Mb

请查找以下内容以供参考

  logging:
  version: 1
  formatters:
    simple:
      format: "%(asctime)s - %(lineno)d - %(name)s - %(levelname)s - %(funcName)s - %(message)s"
  handlers:
    console:
      class: logging.StreamHandler
      level: DEBUG
      formatter: simple
      stream: ext://sys.stdout

    info_file_handler:
      class: logging.handlers.RotatingFileHandler
      level: DEBUG
      formatter: simple
      filename: info.log
      maxBytes: 10485760 # 10MB
      backupCount: 20
      encoding: utf8

    error_file_handler:
      class: logging.handlers.RotatingFileHandler
      level: ERROR
      formatter: simple
      filename: errors.log
      maxBytes: 10485760 # 10MB
      backupCount: 20
      encoding: utf8

  root:
    level: DEBUG
    handlers: [console, info_file_handler, error_file_handler]
现在,一旦生成日志文件,例如:info.log并达到10MB,它就会创建另一个文件示例info1.log,以附加新日志。 但我想在旧日志达到10MB时删除它,并将日志再次写入同一个文件。
我不想创建新文件来附加新日志。

RotatingFileHandler将把旧日志移动到info.log.1、info.log.2等位置,并继续将新日志写入info.log。如果您想保留最多10MB的日志(info.log+info.log.1),可以将
backupCount
设置为1,将
maxBytes
设置为5MB。将备份计数设置为0将禁用滚动。请参阅,一种方法是将旋转文件处理程序子类化,然后编写自己的
doRollover()
,以覆盖现有文件,而不是写入新文件。有人已经实现了这个,请参见。@kielni,(info.log+info.log.1)??我不明白!!正如您所说,如果我将
backuoCount
保持为1,将
maxBytes
保持为5MB,那么当它达到5MB时,它不会创建新文件,而是会删除旧的日志历史记录,并将新日志附加到现有文件(info.log)?@Nikolaos Chatzis,从您提到的示例中可以看出,他们是以编程方式进行的,但是我的日志文件配置在yaml文件中,我正在寻找一些可以添加到yaml文件中的配置,以便
RotatingFileHandler
可能吗?如果将
backupCount
设置为1,并将
maxBytes
设置为5MB,则将有一个活动日志文件(info.log)和一个备份日志文件(info.log.1)。新数据将始终转到info.log。当info.log文件达到5MB时,它会将数据滚动到info.log.1(备份)。