Fácil aplicación de registro / depuración con nginx, uwsgi, matraz?

No estoy buscando encender elconsola de depuración peligrosa, pero mi aplicación está recibiendo un error 500 y no parece estar escribiendo ningún resultado para que yo investigue más a fondo.

Yo vieste intercambio en la lista de correo, lo que me llevoa esta página sobre errores de registro.

Sin embargo, todavía encuentro esto muy confuso y tengo un par de preguntas:

(1) ¿En qué archivo deben ir las cosas a continuación?

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)

... asumiendo que el patrón de archivo "crece" para aplicaciones más grandes?__init__.py? config.py? run.py?

(2) Estoy abrumado por las opciones allí, y no puedo decir cuál debo usar. ¿Qué registradores debo activar, con qué configuración, para replicar la depuración del servidor Python local que obtengo en la salida estándar cuando ejecuto run.py? Considero que el flujo de salida local predeterminado es muy útil, más que el depurador interactivo en la página. ¿Alguien tiene un patrón que podría compartir al configurar algo que duplica esto con una implementación de nginx, y que se traduce en un registro?

(3) ¿Hay algo que deba cambiar, no a nivel del matraz, sino en nginx, por ejemplo, en mi/etc/nginx/sites-available/appname archivo, para habilitar el registro?

ACTUALIZAR

Específicamente, estoy buscando información como la que obtengo cuando Python se ejecuta localmente para explicar por qué, por ejemplo, un paquete no funciona, o dónde podría estar el error de sintaxis, o qué variable no 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)

Cuando ejecuto el frasco en un servidor, nunca veo esto. Acabo de recibir un error de uWSGI en el navegador y no tengo idea de qué código fue problemático. Solo me gustaría que algo como lo anterior se escriba en un archivo.

También me doy cuenta de que la configuración del siguiente registro no escribió mucho en el archivo, incluso cuando subo el nivel de registro al nivel DEBUG:

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

mylog.log está en blanco, incluso cuando mi aplicación falla.

También agregaré que he intentado establecer debug = True de las siguientes maneras, en__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)

Mientras que en mi archivo config.py, tengo ...

debug = True
Debug = True
DEBUG = True

Sin embargo, no se realiza ninguna depuración, y sin el registro o la depuración, esto es bastante difícil de rastrear. Los errores simplemente terminan la aplicación con el mensaje no útil del navegador:

uWSGI Error
Python application not found

Respuestas a la pregunta(3)

Su respuesta a la pregunta