我有一个程序可以在日志文件中提供日志信息,但是现在我创建了一个名为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
中使用不同名称创建新的日志文件时,如果文件大小超过了最大字节数,请帮助我。
先谢谢了。
答案 0 :(得分:1)
编辑以根据评论中的建议扩展答案
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,它允许根据时间旋转日志文件。