2017-02-19 3 views
9

Wenn ich Anwendung mit uwsgi starten, sehe ich keine Protokolle im Zusammenhang mit django.requests.Uwsgi deaktiviert django.request Protokollierung

Aber wenn ich den gleichen Code auf der gleichen Maschine mit

manage.py runserver 8080 

es funktioniert perfekt starten.

Irgendwelche Ideen, warum es passieren könnte?

Ich betreibe uwsgi durch diesen Befehl

/home/gs/python-env/bin/uwsgi --ini /etc/uwsgi.d/uwsgi.ini --static-map /static=/home/gs/api/static/ 

uwsgi.ini

[uwsgi] 
http-socket=:8080 
home=/home/gs/python-env 
chdir=/home/gs/api 
module=server.wsgi 
env=server.settings 
processes=1 
enable-threads=true 

Meine Logging Konfiguration von settings.py

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'formatters': { 
     'verbose': { 
      'format': '%(levelname)s %(asctime)s %(process)d %(threadName)s %(module)s %(funcName)s %(message)s' 
     } 
    }, 
    'handlers': { 
     'console': { 
      'class': 'logging.StreamHandler', 
     }, 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.handlers.RotatingFileHandler', 
      'filename': '/var/log/gs/api.log', 
      'formatter': 'verbose', 
      'maxBytes': 1024 * 1024 * 16, # 16Mb 
     }, 
     'elasticsearch': { 
      'level': 'DEBUG', 
      'class': 'api.common.elasticsearch_log_handler.ElasticSearchHandler', 
      'hosts': [{'host': cluster.ES_HOST, 'port': 443}], 
      'es_index_name': 'logstash', 
      'es_additional_fields': {'type': 'api', 'cluser': cluster.CLUSTER_NAME}, 
      'auth_type': ElasticSearchHandler.AuthType.NO_AUTH, 
      'use_ssl': True, 
     } 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['file', 'elasticsearch', 'console'], 
      'level': 'INFO', 
      'propagate': True 
     }, 
     'django.request': { 
      'handlers': ['file', 'elasticsearch', 'console'], 
      'level': 'DEBUG', 
      'propagate':False 
     } 
    } 
} 

Wenn ich info ändern für ‚django zu debuggen "Ich werde meine Logs von django logger sehen, aber nicht von django.request.

UPD: Wenn ich meine eigene Middleware schreibe, kann ich Anfragen protokollieren. Aber ich möchte wissen, warum django.request nicht mit uwsgi funktioniert.

+1

Es sollte "propagieren", nicht "propagieren". Dies kann zu Problemen bei der ordnungsgemäßen Verarbeitung aller Protokolle führen. – GwynBleidD

+0

@GwynBleidD danke für diese Korrektur. Obwohl das Hauptproblem nicht gelöst ist .. Ich replizierte es auch auf einem anderen Laptop –

+0

Wenn Sie Code geändert haben, ändern Sie es auch in Ihrer Frage. Versuchen Sie auch, 'propagate 'zu ändern: False' in' propagate ': True'. – GwynBleidD

Antwort

5

Djangos runserver bietet die Protokollmeldungen, die unter django.server angezeigt werden. Wenn nicht unter runserver läuft, gibt es noch einige Nachrichten, die unter django.request (meist Fehlermeldungen) protokolliert werden können, aber die Informationsprotokollmeldung für jede Anforderung existiert nur in runserver. Ich habe dies überprüft, indem ich die uWSGI- und die Django-Quelle angeschaut habe.

Wenn Sie eine ähnliche Protokollnachricht möchten, können Sie django-request-logging verwenden.

+0

Danke für die Antwort. Ich denke, dass ich endlich meine eigene Logging-Middleware implementiert habe, was mir noch mehr Flexibilität gab, –