2017-02-19 5 views
9

uwsgiを使用してアプリケーションを起動すると、django.requestsに関連するログは表示されません。Uwsgiはdjango.requestログを無効にします

しかし、私は

manage.py runserver 8080 

を使用して、同じマシン上で同じコードを起動する場合、それは完璧に動作します。

なぜ起こるのでしょうか?

私は「ジャンゴのためにデバッグする情報を変更した場合、私は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 
     } 
    } 
} 

から

/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 

マイログ構成このコマンドでuwsgi実行'私はdjango.logからログを表示しますが、django.requestは表示しません。

UPD:自分のミドルウェアを作成すると、リクエストを記録できます。しかし、私はdjango.requestがuwsgiで動作しない理由を知りたい。

+1

'propagate'ではなく' propagate'でなければなりません。そのため、すべてのログを正しく処理する上で問題が発生する可能性があります。 – GwynBleidD

+0

@GwineBleidDこの修正をありがとうございます。主な問題は解決していませんが、私は別のラップトップにも複製しました –

+0

コードを変更した場合は、あなたの質問にも変更してください。また、 '' propagate ': '' propagate':True'に変更してみてください。 – GwynBleidD

答えて

5

Djangoのrunserverは、django.serverの下に表示されるログメッセージを提供します。 runserverを実行していないときには、まだdjango.request(ほとんどの場合エラーメッセージ)に記録できるメッセージがいくつかありますが、各要求の情報ログメッセージはrunserverにのみ存在します。私はuWSGIとDjangoのソースを見て確認しました。

同様のログメッセージが必要な場合は、django-request-loggingを使用できます。

+0

答えをありがとう。私は最終的に私自身のロギングミドルウェアを実装したと思います。 –

関連する問題