Django中的自定义日志轮换

时间:2019-08-20 11:58:45

标签: django logging

我想在Django中实现日志记录,

1]日志文件大小超过某个阈值后,将生成一个新的日志文件并将其写入。
2]此新文件的名称应可自定义。例如,日志文件名可以是current_date_and_time-app_name.log
3] [可选]压缩并存储了已达到大小限制的文件。

请注意,在创建名称为创建时间的新日志文件时,将永远不会重写旧的日志文件。 我该怎么做?

我尝试使用RotatingFileHandler类,但是它重写了旧日志,并且也没有提供更改日志名称的灵活性。这是我编写的代码:

BASE_DIR_APP = os.path.dirname(os.path.abspath(__file__))
DIR_LOGS = os.path.join(BASE_DIR_APP, 'logs')
current_time = datetime.now().strftime("%b-%d-%Y_%H-%M-%S--%f")


U_LOGFILE_SIZE = 1 * 1024
U_LOGFILE_COUNT = 2


logging.config.dictConfig({
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'console': {
            'format': '%(name)-12s %(levelname)-8s %(message)s'
        },
        'file': {
            'format': '%(asctime)s %(name)-12s %(levelname)-8s %(message)s'
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'console'
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',
            'formatter': 'file',
            'maxBytes': U_LOGFILE_SIZE,
            'backupCount': U_LOGFILE_COUNT,
            'filename': os.path.join(DIR_LOGS, current_time + '.log')
        }
    },
    'loggers': {
        '': {
            'level': 'DEBUG',
            'handlers': ['console', 'file']
        }
    }
})

0 个答案:

没有答案