2017-02-15 2 views
2

Ich versuche, mein Django-Projekt mit uWSGI einzurichten. Ich habe meine Log-Handler in 10 definiert und sie schreiben Protokolle, wenn ich den Entwicklungsserver verwendet. Wenn ich jedoch mithilfe von uWSGI auf meinen Produktionsserver umschalte, ist die Protokolldatei zwar erstellt, aber leer.Django uWSGI erstellt eine Protokolldatei, aber die Datei ist leer (funktioniert mit dem Entwicklungsserver)

Mein settings.py enthält diese:

import logging 
logger = logging.getLogger('django_auth_ldap') 
logger.addHandler(logging.StreamHandler()) 
logger.setLevel(logging.DEBUG) 

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
    'console': { 
     'class': 'logging.StreamHandler', 
     }, 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.FileHandler', 
      'filename': '/tmp/zdebug.log', 
      }, 
     }, 
     'loggers': { 
      'django': { 
       'handlers': ['console','file'], 
       'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'), 
      }, 
      'devices': { 
       'handlers': ['console','file'], 
       'level': 'INFO' 
      }, 
      'stack_configs': { 
       'handlers': ['console','file'], 
       'level': 'INFO' 
      }, 
      'django_auth_ldap': { 
       'handlers': ['console','file'], 
       'level': 'INFO' 
       },  
      }, 
    } 

Vielen Dank im Voraus für jede Hilfe, die Sie anbieten können.

Antwort

2

Dies ist, weil Ihre Konfiguration falsch ist. Sie haben loggers innerhalb handlers gesetzt, was die Struktur LOGGING verletzt. Es soll den handlers, loggers, filters und formatters auf dem gleichen Niveau einer dict Einbuchtung:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'console': { 
      'class': 'logging.StreamHandler', 
     }, 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.FileHandler', 
      'filename': '/tmp/zdebug.log', 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['console','file'], 
      'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'), 
     }, 
     'devices': { 
      'handlers': ['console','file'], 
      'level': 'INFO' 
     }, 
     'stack_configs': { 
      'handlers': ['console','file'], 
      'level': 'INFO' 
     }, 
     'django_auth_ldap': { 
      'handlers': ['console','file'], 
      'level': 'INFO' 
     }, 
    }, 
} 

Die leere Datei, die Sie sehen auf Django Boot erstellt, und Django Protokolle auf Ihrem Entwicklungsserver, weil verwenden es Standardlogger , Missachtung der fehlerhaften Konfiguration.

Verwandte Themen