我有一个在日志文件中提供日志信息的程序,但是现在我已经创建了一个名为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
中用不同的名称创建新的日志文件,当它超过maxbytes大小时…请帮助我如何做。你知道吗
提前谢谢。。你知道吗
看看RotatingFileHandler
根据评论中的建议编辑以扩展答案
RotatingFileHandler类支持磁盘日志文件的旋转。在实例化时,您可以提供两个可选参数-maxBytes(默认值为0)和backupCount(默认值为0)
您可以使用maxBytes和backupCount值来允许文件以预定的大小滚动。当大小即将超过时,文件将被关闭,新文件将以静默方式打开以供输出。每当当前日志文件的长度接近maxBytes时,就会发生滚动;但是如果maxBytes或backupCount中的任何一个为零,则不会发生滚动,因此通常需要将backupCount设置为至少1,并且具有非零的maxBytes。当backupCount非零时,系统将通过在文件名后附加扩展名“.1”、“.2”等来保存旧日志文件。例如,backupCount为5,基本文件名为应用程序日志,你会得到应用程序日志, 应用程序日志.1, 应用程序日志.2,最多应用程序日志.5. 写入的文件总是应用程序日志. 填充此文件后,它将关闭并重命名为应用程序日志.1,如果文件应用程序日志.1, 应用程序日志.2等存在,则将它们重命名为应用程序日志.2, 应用程序日志3等。你知道吗
还有TimeRotatingFileHandler,它允许基于时间旋转日志文件。你知道吗
相关问题 更多 >
编程相关推荐