Мы используем архитектуру NGINX + Gunicorn + Django + RQ с несколькими rq-рабочими. Мы используем основные настройки протоколирования Джанго (следует), с опрокидыванием и макс-размера файла, НО:NGINX/Gunicorn/Django-RQ: Как зарегистрировать каждого rq-пользователя в другом файле
- Созданные файлы иногда очень маленький - несколько байт, а не заданная 2MB.
- Файлы опрокидывания номеров отличаются от того, что было определено.
Вопросы:
a. Любая идея, почему фактический номер и размер создания файла отличаются друг от друга?
b. Возможно ли, чтобы каждый журнал django rq-worker был в другом файле с политикой опрокидывания и максимального размера файла?
наши настройки протоколирования:
LOG_FILE_MAX_SIZE_MB = int(os.environ.get('log_file_max_size_mb', 1))
LOG_FILES_ROTATE_NUM = int(os.environ.get('log_files_rotate_num', 8))
log_file_dir = os.path.dirname(LOG_FILE_FULL_PATH)
if not os.path.exists(log_file_dir):
os.makedirs(log_file_dir, 0777)
DATE_TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
VERBOSE_LINE_FORMAT = '%(asctime)s - %(levelname)s - %(process)d - %(thread)d - %(filename)s - %(message)s'
SIMPLE_LINE_FORMAT = '[%(levelname)-7s] %(asctime)s - %(message)s'
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': VERBOSE_LINE_FORMAT,
'datefmt': DATE_TIME_FORMAT
},
'simple': {
'format': SIMPLE_LINE_FORMAT,
'datefmt': DATE_TIME_FORMAT
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
},
'fat_app_logfile': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'maxBytes': 1024*1024*LOG_FILE_MAX_SIZE_MB,
'backupCount': LOG_FILES_ROTATE_NUM,
'filename': LOG_FILE_FULL_PATH,
'formatter': 'verbose'
},
'rq_app_logfile': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'maxBytes': 1024*1024*LOG_FILE_MAX_SIZE_MB,
'backupCount': LOG_FILES_ROTATE_NUM,
'filename': LOG_FILE_FULL_PATH,
'formatter': 'verbose'
},
},
'loggers': {
'MainLogger': {
'handlers': ['console', 'fat_app_logfile'],
'propagate': True,
'level': 'DEBUG',
},
'rq_scheduler': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
}
Спасибо
Я получил ConcurrentRotatingFileHandler и работает, но до сих пор только видим выход журнала первичного процесса. –