Fácil aplicação de logging / debugging com nginx, uwsgi, flask?

Eu não estou olhando para ligar oconsola de depuração perigosa, mas meu aplicativo está recebendo um erro 500 e parece não estar escrevendo nenhuma saída para eu investigar mais profundamente.

eu viesta troca na lista de discussão, o que me levoupara esta página em erros de registro.

No entanto, ainda acho isso muito confuso e tenho algumas perguntas:

(1) Em qual arquivo as coisas abaixo vão?

ADMINS = ['[email protected]']
if not app.debug:
    import logging
    from logging.handlers import SMTPHandler
    mail_handler = SMTPHandler('127.0.0.1',
                               '[email protected]',
                               ADMINS, 'YourApplication Failed')
    mail_handler.setLevel(logging.ERROR)
    app.logger.addHandler(mail_handler)

... assumindo o padrão de arquivo "ficando maior" para aplicativos maiores?__init__.py? config.py? run.py?

(2) Eu estou sobrecarregado por opções lá, e não posso dizer qual devo usar. Quais loggers eu devo ativar, com quais configurações, para replicar a depuração do servidor python local Eu alcanço o stdout quando eu executo o run.py? Eu acho que o padrão, fluxo de saída local é muito útil, mais do que o depurador interativo na página. Alguém tem um padrão que poderia compartilhar na configuração de algo que replica isso com uma implementação do nginx, saindo para um log?

(3) Existe alguma coisa que eu preciso mudar, não no nível do frasco, mas no nginx, digamos no meu/etc/nginx/sites-available/appname arquivo, para habilitar o log?

ATUALIZAR

Especificamente, estou procurando informações como quando o python é executado localmente, por exemplo, por exemplo, um pacote não está funcionando, ou onde meu erro de sintaxe pode estar, ou qual variável não existe:

$ python run.py 
Traceback (most recent call last):
  File "run.py", line 1, in <module>
    from myappname import app
  File "/home/me/myappname/myappname/__init__.py", line 27, in <module>
    file_handler.setLevel(logging.debug)
  File "/usr/lib/python2.7/logging/__init__.py", line 710, in setLevel
    self.level = _checkLevel(level)
  File "/usr/lib/python2.7/logging/__init__.py", line 190, in _checkLevel
    raise TypeError("Level not an integer or a valid string: %r" % level)

Quando eu corro o frasco em um servidor, eu nunca vejo isso. Acabei de receber um erro do uWSGI no navegador e não tenho ideia de qual código era problemático. Gostaria apenas que algo como o acima fosse escrito em um arquivo.

Eu também notei que a configuração do seguinte registro de log realmente não escrevia muito para o arquivo, mesmo quando eu transformava o caminho do log para o nível DEBUG:

from logging import FileHandler
file_handler = FileHandler('mylog.log')
file_handler.setLevel(logging.DEBUG)
app.logger.addHandler(file_handler)

mylog.log está em branco, mesmo quando meu aplicativo está com erros.

Eu também vou adicionar que eu tentei definir debug = True das seguintes maneiras, em__init__.py:

app = Flask(__name__)
app.debug = True
app.config['DEBUG'] = True
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
app.config.from_object('config')
app.config.update(DEBUG=True)
app.config['DEBUG'] = True
if __name__ == '__main__':
    app.run(debug=True)

Enquanto no meu arquivo config.py, eu tenho ...

debug = True
Debug = True
DEBUG = True

No entanto, nenhuma depuração acontece, e sem registro ou depuração, isso é bastante difícil de rastrear. Os erros simplesmente terminam o aplicativo com a mensagem não útil do navegador:

uWSGI Error
Python application not found

questionAnswers(3)

yourAnswerToTheQuestion