Django: los registradores están sobrescribiendo el archivo de registro anterior junto con el nuevo.
Estoy utilizando el registrador Django para registrar junto con los trabajadores gunicorn. Actualmente, estoy probando con 3 trabajadores y estoy usando TimedRotatingFileHandler. Configuré cuando = m e intervalo = 1, intenté enviar algunas 1000 solicitudes y está escribiendo en el nuevo archivo y sobrescribiendo también el archivo anterior.
Aquí está mi configuración de settings.py
'debug': {
'level': 'DEBUG',
'filename': BASE_DIR + '/Log/debug.log',
'class': 'logging.handlers.TimedRotatingFileHandler',
'when': 'M',
'interval': 1,
'formatter': 'verbose'
},
Esto solo sucederá si uso más de 1 trabajador gunicorn. Pero si uso 1 trabajador gunicorn, esto no está sucediendo.
davy.ai
Solución
Este problema ocurre cuando varios trabajadores de Gunicorn utilizan el mismo archivo de registro para escribir registros simultáneamente. Cuando un trabajador intenta rotar el archivo de registro, sobrescribe el archivo de registro que está siendo utilizado por otro trabajador, lo que resulta en la pérdida de registros.
Para evitar este problema, podemos realizar los siguientes pasos:
--preload
de Gunicorn enTrue
, lo que cargará el código de la aplicación en memoria antes de bifurcar los procesos del trabajador. Esto asegurará que cada trabajador tenga su propio espacio de memoria único, evitando interferencias entre ellos.Realizando estos cambios, cada trabajador de Gunicorn tendrá su propio archivo de registro y no sobrescribirá el archivo de registro de ningún otro trabajador.</punto_de_entrada_de_aplicación></nombre_de_aplicación>