超过最大大小时如何在日志文件夹中创建多个日志文件

时间:2018-12-07 11:10:45

标签: python json logging

我有一个程序可以在日志文件中提供日志信息,但是现在我创建了一个名为LogFolder的文件夹,我将日志文件保留在同一文件夹中,但是每次创建新文件时我都想创建当它增加了具有不同名称的maxBytes大小

我的日志文件以json格式编写,如果您也知道相同查询的正常格式,那么您可以为我提供帮助。

我的logging.json文件是:

{
  "version": 1,
  "disable_existing_loggers": false,
  "formatters": {
        "json": {
        "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
            "()": "pythonjsonlogger.jsonlogger.JsonFormatter"
        }
  },
  "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "DEBUG",
            "formatter": "json",
            "stream": "ext://sys.stdout"
        },
        "file_handler": {
            "class": "logging.handlers.RotatingFileHandler",
            "level": "DEBUG",
            "formatter": "json",
            "filename": "..\\LogFloder\\Data.log",
            "mode": "a",
            "maxBytes": 25600,
            "encoding": "utf8"
         }
  },
  "root": {
       "level": "DEBUG",
       "handlers": ["console", "file_handler"]
  }
}

这就是我在python文件main.py中调用它的方式:

import logging.config
import json
fp = open('logging.json')
logging.config.dictConfig(json.load(fp))
logging.getLogger("requests").setLevel(logging.WARNING)
logger = logging.getLogger(__name__)
logger.removeHandler(default_handler)
fp.close()

这里所有的东西都运行良好。我只想在LogFolder中使用不同名称创建新的日志文件时,如果文件大小超过了最大字节数,请帮助我。

先谢谢了。

1 个答案:

答案 0 :(得分:1)

看看RotatingFileHandler

编辑以根据评论中的建议扩展答案

RotatingFileHandler类支持磁盘日志文件的旋转。在实例化时,您可以提供两个可选参数-默认值为0的 maxBytes 和默认值为0

backupCount

您可以使用 maxBytes backupCount 值来允许文件以预定大小滚动。当将要超过该大小时,将关闭该文件,并以静默方式打开一个新文件以进行输出。只要当前日志文件的长度接近 maxBytes ,就会发生翻转。但是如果 maxBytes backupCount 中的任何一个为零,则永远不会发生翻转,因此您通常希望将backupCount设置为至少1,并且 maxBytes为非零。当 backupCount 不为零时,系统将通过在文件名后附加扩展名“ .1”,“。2”等来保存旧的日志文件。例如,如果 backupCount 为5,并且基本文件名为app.log,则将得到app.log,app.log.1,app.log.2,直至app.log。 5,写入的文件始终是app.log。填充此文件后,将其关闭并重命名为app.log.1,如果存在文件app.log.1,app.log.2等,则它们将重命名为app.log.2,app。 log.3等。

还有一个TimeRotatingFileHandler,它允许根据时间旋转日志文件。