108 votes

Python/Django : Connectez-vous à la console sous runserver, enregistrer dans fichier sous Apache

Comment puis-je envoyer des messages de trace dans la console (comme print) quand je fais tourner mon Django app en vertu de l' manage.py runserver, mais ont ces messages envoyés à un fichier journal lorsque j'exécute l'application sous Apache?

J'ai passé en revue Django journalisation et bien que j'ai été impressionné par sa flexibilité et la configurabilité pour les usages avancés, je suis toujours perplexe à la manière de gérer mon simple d'utilisation-cas.

Mes excuses pour ne pas être en mesure de trouver la réponse ailleurs, c'est une question de newbie, je le sais.

99voto

m01 Points 2471

Voici une solution de journalisation django. Il utilise le débogage mise au lieu de réellement vérifier si oui ou non que vous exécutez le serveur de développement, mais si vous trouvez un moyen meilleur moyen de vérifier qu’il devrait être facile à adapter.

voir https://docs.djangoproject.com/en/dev/topics/logging/ pour plus de détails.

81voto

Ignacio Vazquez-Abrams Points 312628

Texte imprimé sur stderr sera affiché dans le journal des erreurs de httpd quand il tourne sous mod_wsgi. Vous pouvez utiliser directement, ou utilisez au lieu de cela.

26voto

bennylope Points 427

Vous pouvez configurer la journalisation dans votre settings.py le fichier.

Un exemple:

if DEBUG:
    # will output to your console
    logging.basicConfig(
        level = logging.DEBUG,
        format = '%(asctime)s %(levelname)s %(message)s',
    )
else:
    # will output to logging file
    logging.basicConfig(
        level = logging.DEBUG,
        format = '%(asctime)s %(levelname)s %(message)s',
        filename = '/my_log_file.log',
        filemode = 'a'
    )

Cependant, c'est dépendante de réglage de DÉBOGAGE, et peut-être que vous ne voulez pas avoir à vous soucier de la façon dont il est mis en place. Voir cette réponse sur Comment puis-je savoir si mon application Django est en cours d'exécution sur le serveur de développement ou pas? pour une meilleure façon d'écrire que conditionnelle. Edit: l'exemple ci-dessus est de Django 1.1 projet, la configuration de la journalisation dans Django a quelque peu changé depuis cette version.

4voto

xuejunliang Points 1

J’utilise ceci :

Logging.conf :

testapp.py :

0voto

dorkitude Points 4484

Vous pouvez le faire assez facilement avec tagalog (https://github.com/dorkitude/tagalog)

Par exemple, alors que le standard de python module écrit à un objet de fichier ouvert en mode ajout, l'Application du Moteur du module (https://github.com/dorkitude/tagalog/blob/master/tagalog_appengine.py) remplace ce comportement et utilise à la place de logging.INFO.

Pour obtenir ce comportement dans une App Engine projet, on pourrait tout simplement faire:

import tagalog.tagalog_appengine as tagalog
tagalog.log('whatever message', ['whatever','tags'])

Vous pouvez étendre le module vous-même et remplacer la fonction log sans trop de difficulté.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X