Как использовать ведение журнала Django с помощью gunicorn

У меня есть сайт Django 1.6, работающий с gunicorn, управляемый супервизором. Во время тестов и запуска сервера у меня есть журнал на консоли, но с пушками операторы нигде не отображаются (даже в журналах уровня ERROR). Они должны быть в /var/log/supervisor/foo-stderr---supervisor-51QcIl.log, но это не так. У меня есть сельдерей, работающий на другом компьютере с помощью супервизора, и его операторы отладки отлично отображаются в файле ошибок супервизора.

Изменить: запуск gunicorn на переднем плане показывает, что ни одно из моих сообщений об ошибках не регистрируется в stderr, как при запуске manage.py. Это определенно проблема стрелкового оружия, а не проблема супервайзера.


person Seán Hayes    schedule 24.01.2014    source источник


Ответы (3)


Я получил ответ на GitHub:

https://github.com/benoitc/gunicorn/issues/708

Поскольку вы прошли disable_existing_loggers, логгеры Gunicorn отключаются, когда Django загружает вашу конфигурацию логирования. Если вы устанавливаете это, потому что хотите отключить некоторую конфигурацию ведения журнала Django по умолчанию, убедитесь, что вы добавили обратно регистраторы пушек, gunicorn.error и gunicorn.access с любыми обработчиками, которые вы хотите.

person Seán Hayes    schedule 22.10.2014

В /etc/supervisor/conf.d/your-app.conf необходимо указать пути к логам:

stdout_logfile=/var/log/your-app.log
stderr_logfile=/var/log/your-app.log
person AlexanderLedovsky    schedule 24.01.2014
comment
У меня уже есть файл stderr, но операторы регистрации не отображаются. - person Seán Hayes; 25.02.2014

Во-первых, в конфигурации вашего супервайзера для скрипта gunicorn обязательно определите

stdout_logfile=/path/to/logfile.log
redirect_stderr=true

Это приведет к тому, что stdout и stderr будут обращаться к одному и тому же файлу.
Теперь в скрипте gunicorn обязательно вызовите процесс со следующим аргументом.

gunicorn YourWSGIModule:app --log-level=critical
person fixmycode    schedule 03.06.2014