Python 3.x Python如何在达到特定字节后从生成的日志文件中删除日志历史记录
我正在使用yaml配置文件创建日志处理程序,使用logging.handlers.RotatingFileHandler,在配置文件中,我给了maxBytes 10Mb 请查找以下内容以供参考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
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(备份)。