2017-02-19 2 views
9

Если я запускаю приложение с помощью uwsgi, я не вижу журналы, связанные с django.requests.Uwsgi отключает django.request logging

Но если я запускаю этот код на той же машине, используя

manage.py runserver 8080 

она прекрасно работает.

Любые идеи, почему это может случиться?

Я бегу uwsgi этой командой

/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 

Моя конфигурация каротаж из 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 
     } 
    } 
} 

Если изменить данные отладки для «Джанго «Я увижу свои журналы из django logger, но не из django.request.

UPD: Если я пишу свое собственное промежуточное программное обеспечение, я могу регистрировать запросы. Но я хочу знать, почему django.request не работает с uwsgi.

+1

Он должен «распространяться», а не «распространяться». Это может вызвать проблемы с правильной обработкой всех журналов. – GwynBleidD

+0

@GwynBleidD благодарим вас за эту коррекцию. Хотя основная проблема не решена. Я также воспроизвел ее на другом ноутбуке. –

+0

Если вы изменили код, измените его и на свой вопрос. Также попробуйте изменить '' распространение ': False' для '' распространения': True'. – GwynBleidD

ответ

5

Django's runserver содержит сообщения журнала, которые отображаются под django.server. Когда не работает под runserver, все еще есть сообщения, которые могут быть зарегистрированы до django.request (в основном сообщения об ошибках), но информационное сообщение журнала для каждого запроса существует только в runserver. Я проверил это, посмотрев на источник uWSGI и Django.

Если вы хотите получить подобное сообщение в журнале, вы можете использовать django-request-logging.

+0

Спасибо за ответ. Я думаю, что, наконец, я реализовал свое собственное промежуточное программное обеспечение для ведения журнала, что дало мне еще большую гибкость, –