faltan algunos registros de django cuando se hospeda en uwsgi con múltiples procesos

Estoy usando django + uwsgi para un proyecto web. ¡Pero encontré que faltarían algunos registros django después de que uwsgi se esté ejecutando por un tiempo!

La situación es que: configuro el uwsgi con 8 procesos. Cuando comienzo el uwsgi, todos los registros de django se escribirían en un solo archivo de registro. Pero después de unas horas, algunos registros no se escriben en el archivo. Comparé el archivo de registro django con el archivo de registro uwsgi. Encontré que solo las solicitudes de un proceso uwsgi estaban escritas en el archivo django. Faltaban los otros 7 registros django del proceso. Cuando reinicio el uwsgi, es el mismo resultado.

¿Alguien sabe acerca de esto?

Gracias,

mi configuración de registro django:

LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'simple': { 'format': '%(levelname)s %(asctime)s %(message)s' }, 'detail': { 'format': '%(levelname)s %(asctime)s [%(module)s.%(funcName)s line:%(lineno)d] %(message)s', }, }, 'handlers': { 'file': { 'level': 'INFO', 'formatter': 'simple', 'class': 'logging.handlers.TimedRotatingFileHandler', 'filename': LOG_FILE, 'when': 'midnight', 'backupCount': 366, }, 'err_file': { 'level': 'WARN', 'formatter': 'detail', 'class': 'logging.handlers.TimedRotatingFileHandler', 'filename': LOG_ERR_FILE, 'when': 'midnight', 'backupCount': 366, }, }, 'loggers': { 'django_request': { 'handlers': ['file', 'err_file'], 'level': 'DEBUG', 'propagate': True, }, } } 

mi configuración de uwsgi:

  0.0.0.0:8888 src_dir .. wsgi 4 8 true uwsgi.pid true true /log/uwsgi/uwsgi.log  

Esto se debe a que no es seguro escribir en el mismo archivo de varios trabajadores. Debe escribir registros en diferentes archivos de cada trabajador, o tratar de usar SysLogHandler

http://docs.python.org/library/logging.handlers.html

/etc/rsyslog.d/local-myapp.conf:

 local0.* -/var/log/myapp/app.log 

settings.py:

 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'filters': { 'user': { '()': 'core.log.UserFilter', } }, 'formatters': { 'verbose': { 'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(user)s %(message)s' }, 'simple': { 'format': '%(levelname)s %(asctime)s %(module)s %(user)s %(message)s' }, }, 'handlers': { 'mail_admins': { 'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler', 'filters': ['user'], }, 'syslog':{ 'level': 'INFO', 'class': 'logging.handlers.SysLogHandler', 'formatter': 'verbose', 'filters': ['user'], 'facility': 'local0', 'address': '/dev/log', }, }, 'loggers': { 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True, }, }, 'root': { 'handlers': ['syslog'], 'level': 'INFO', } } 

También puede intentar escribir mensajes de registro en la consola y dejar que uwsgi escriba los registros por sí mismo.