Django com Apache e mod_wsgi: sem log do sistema a menos que seja configurado Debug = True

4

Estou usando o servidor web apache e o mod_wsgi para transferir o pedido para o django.

$ apache2ctl -v
Server version: Apache/2.4.10 (Raspbian)
Server built:   Sep 17 2016 16:40:43

Estou usando este site apache para declarar o aplicativo django:

ServerName example.com
DocumentRoot /srv/webapps/myapp

<Directory /srv/wepapps/myapp/mysite>
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

WSGIDaemonProcess example.com python-path=/srv/webapps/myapp:/usr/local/lib/python3.4/dist-packages:/usr/lib/python3/dist-packages
WSGIProcessGroup example.com
WSGIScriptAlias / /srv/webapps/myapp/mysite/wsgi.py

LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined

Funciona muito bem, mas se uma exceção é gerada, ele mostra um erro 500, mas não há nada no meu example.com_error.log . Se eu modificar minhas configurações para definir Debug = True , posso ver erros no meu navegador da Web, mas também no meu arquivo / var / log / apache2. Mas eu realmente não quero manter essa configuração no meu ambiente prod.

Você tem uma idéia de por que eu tenho que colocar Debug = True para permitir que o django escreva nos logs do sistema?

Agradecemos antecipadamente por suas respostas e desculpe se eu cometi alguns erros com o meu inglês; -)

    
por Thomas 17.08.2017 / 05:59

1 resposta

0

Em seu arquivo settings.py, você precisará adicionar o seguinte à configuração LOGGING:

LOGGING = {
    #  ... omitting the formatters and handlers for brevity ...
    'loggers': {
        # ...  you may have other loggers here as well ...
        'django': {
            'handlers': ['name_of_your_file_handler_goes_here'],
            'level': 'DEBUG',
            'propagate': True,
        }
    }

Você provavelmente deve definir o nível como ERROR ou WARN na produção.

    
por 13.08.2018 / 21:16