您可以使用日志记录和json模块来实现这一点,如下所示:
import logging
import json
import os
from logging.handlers import RotatingFileHandler
def rotate_json_file(file_path, max_bytes, backup_count):
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
file_handler = RotatingFileHandler(file_path, mode='a', maxBytes=max_bytes, backupCount=backup_count)
file_handler.setFormatter(logging.Formatter('%(message)s'))
logger.addHandler(file_handler)
json_data = {'key': 'value'}
logger.info(json.dumps(json_data))
logger.removeHandler(file_handler)
file_handler.close()
record = logging.makeLogRecord(json_data)
if file_handler.shouldRollover(record):
# Get the rotated file names
rotated_files = [file_path] + [file_path + '.{}'.format(i) for i in range(1, backup_count + 1)]
os.remove(rotated_files[-1])
for i in range(len(rotated_files) - 1, 0, -1):
os.rename(rotated_files[i - 1], rotated_files[i])
open(file_path, 'a').close()