Facile de journalisation de l'application de débogage avec nginx, uwsgi, flacon?

Je ne suis pas à la recherche à son tour sur le dangereux console de débogage, mais ma demande est d'obtenir une erreur 500 et ne semble pas être l'écriture d'une sortie pour moi d'étudier plus profondément.

J'ai vu cet échange sur la liste de diffusion, qui m'a conduit cette page sur l'enregistrement des erreurs.

Cependant, je trouve toujours cela très confus et ont une ou deux questions:

(1) Dans lequel le fichier doit les trucs ci-dessous aller?

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)

...en supposant que le "grossir" le modèle de fichier pour des applications plus importantes? __init__.py? config.py? run.py?

(2) je suis submergé par les options-t-il, et ne pouvez pas dire à qui je dois utiliser. Qui enregistreurs dois-je allumer, avec les réglages que, pour répliquer les locaux python de débogage du serveur j'arrive à stdout quand je le lance run.py? Je trouve que par défaut, locaux flux de sortie très utile, d'autant plus que le débogueur interactif dans la page. Quelqu'un aurait-il un modèle qu'ils pourraient partager sur la configuration de quelque chose de reproduire ce avec un nginx déploiement, de la sortie d'un journal?

(3) Est-ce que je besoin de changer, pas à la fiole de niveau, mais dans nginx, dire dans mon /etc/nginx/sites-available/appname fichier, activer la journalisation?

Mise à JOUR

Plus précisément, je suis à la recherche pour obtenir de l'information que je reçois quand python fonctionne localement, pourquoi, par exemple, un paquet n'est pas de travail, ou d'où mon erreur de syntaxe peut-être, ou que la variable n'existe pas:

$ 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)

Quand je lance le ballon sur un serveur, je n'ai jamais vu cela. Je viens d'obtenir un uWSGI d'erreur dans le navigateur, et n'ont aucune idée de code qui pose problème. Je voudrais juste quelque chose comme ci-dessus pour être écrites dans un fichier.

Je remarque d'ailleurs que la définition de la suite de la journalisation n'a pas vraiment écrire beaucoup de fichier, même quand je tourne le journal jusqu'au niveau de DÉBOGAGE:

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

mylog.log est vide, même quand ma demande d'erreur.

Je vais aussi ajouter que j'ai essayé de définir debug = True dans l'une des manières suivantes, dans __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)

Alors que dans mon config.py fichier, j'ai...

debug = True
Debug = True
DEBUG = True

Encore, pas de débogage qui se passe, et sans vous connecter ou de débogage, c'est plutôt difficile à traquer. Les erreurs de simplement mettre fin à l'application avec les nations unies, utile navigateur message:

uWSGI Error
Python application not found
  • J'ai mis à jour ma réponse basée sur la mise à jour de votre question.
  • Avez-vous jamais obtenir ce résolu?
  • Je n'ai pas. N'a pas pu obtenir une machine de production hébergé, donné sur flacon.
  • Je pense, en regardant en arrière aujourd'hui, c'est probablement que je n'ai pas les autorisations d'écrire n'importe quel serveur de répertoire de l'application était en cours, et en spécifiant un autre endroit pour écrire le journal aurait pris soin de lui.
InformationsquelleAutor Mittenchops | 2013-04-20