Как управлять журналами mod_wsgi в apache?

Я работаю над приложением фляги, и я использовал mod_wsgi и Apache для размещения приложения фляги. Я настроил ведение журнала в приложении, но я заметил, что в apache/logs/error.log записываются одни и те же журналы, например

[wsgi:error] ... BACK TO THE BROWSER
[wsgi:error] ... Selected records from table 
[wsgi:error] ... mod_wsgi (pid=1654): Exception occurred processing WSGI script '/tmp/mod_wsgi-localhost:8000:0/htdocs/'.
[wsgi:error] ... ID 1123 Inserted in table

Из-за этого error.log загрязняется ошибками wsgi:error и apache, что затрудняет анализ файла журнала.

Есть ли какой-либо способ перестать записывать wsgi.errors в файлы error.log или мы можем перенаправить эти конкретные журналы в отдельные файлы журналов?


person Shashi    schedule 09.06.2016    source источник
comment
Где ваш apache/log/error.log?   -  person Sören    schedule 21.11.2018


Ответы (2)


Обычно я добавляю ErrorLog в свой VirtualHost. Вот пример Apache VirtualHost, который я использую:

<VirtualHost *:443>

  ServerName yourservername.com
  ErrorLog /home/yourusername/apache_errors.log

  WSGIDaemonProcess yourproject-https python-home=/home/yourusername/.virtualenvs/yourproject
  WSGIScriptAlias /yourproject /var/www/html/yourproject/yourproject/wsgi.py process-group=yourproject-https application-group=yourproject-https
  WSGIProcessGroup yourproject-https
  Alias /yourproject/static/ /var/www/html/yourproject/static/

  SSLENGINE on 

  SSLCertificateFile /etc/pki/tls/certs/localhost.crt
  SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
  SSLProtocol all -SSLv2
</VirtualHost>

Это помогло бы? Конечно, вы можете выбрать путь, отличный от вашего домашнего каталога.

person FlipperPA    schedule 10.06.2016
comment
У меня такая же настройка, но все равно ошибки wsgi регистрируются в error.log и apache_errors.log (здесь только исключения): S - person Shashi; 13.06.2016
comment
@ Шаши, я делаю то же наблюдение. - person Torsten Bronger; 30.10.2019
comment
Это зарегистрирует только ошибки для домена, указанного в ServerName или ServerAlias, а в этом примере только для https. - person FlipperPA; 31.10.2019

Во-первых, вы должны добавить ErrorLog в VirtualHost, затем вы должны использовать flask.logging.default_handler для регистрации вашего сообщения.

И будьте осторожны, если ваше приложение запроса не существует в вашей среде threadLocal, flask будет использовать std.strerr для регистрации сообщения, и это произойдет из-за того, что сообщение будет кэшировано основным журналом, а не журналом VirtualHost.

person Y.Wang    schedule 05.09.2018