django 中优雅的旋转日志文件名

alb*_*fdp 3 python django logging

我正在尝试设置一个每天写入新文件的记录器。我想登录到 /log/name_YYYY_mm_dd.log 中的文件,但似乎这是最初完成的。

有没有优雅的方法来旋转文件名?

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
    'require_debug_false': {
        '()': 'django.utils.log.RequireDebugFalse'
    }
},
'formatters': {
    'verbose': {
        'format': '%(levelname)s|%(asctime)s|%(module)s|%(process)d|%(thread)d|%(message)s',
        'datefmt' : "%d/%b/%Y %H:%M:%S"
    },
},
'handlers': {
    'default': {
        'level': 'INFO',
        'class': 'logging.handlers.TimedRotatingFileHandler',
        'filename': os.path.join(ROOT_DIR, 'django_%s.log' % (datetime.now().strftime('%Y-%m-%d-%H-%M'))),
        'formatter': 'verbose',
    },
},
'loggers': {
    'sensible': {
        'handlers': ['default'],
        'level': 'DEBUG',
        'propagate': True,
    },
}
Run Code Online (Sandbox Code Playgroud)

}

Cee*_*man 5

'when': 'midnight',如果您从多个实例登录,您可能忘记了一个包装器。试试这个

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
    'require_debug_false': {
        '()': 'django.utils.log.RequireDebugFalse'
    }
},
'formatters': {
    'verbose': {
        'format': '%(levelname)s|%(asctime)s|%(module)s|%(process)d|%(thread)d|%(message)s',
        'datefmt' : "%d/%b/%Y %H:%M:%S"
    },
},
'handlers': {
    'default': {
        'level': 'INFO',
        'class': 'logging.handlers.TimedRotatingFileHandler',
        'filename': os.path.join(ROOT_DIR, 'django.log'),
        'formatter': 'verbose',
        'when': 'midnight',
        'backupCount': '30',
    },
},
'loggers': {
    'sensible': {
        'handlers': ['default'],
        'level': 'DEBUG',
        'propagate': True,
    },
}
Run Code Online (Sandbox Code Playgroud)

系统将通过将扩展名附加到文件名来保存旧的日志文件。扩展基于日期和时间,使用 strftime 格式%Y-%m-%d_%H-%M-%S或其前导部分,具体取决于翻转间隔。