11
votes

Où les choses vont-elles quand je les imprimerai de mon application Django?

J'ai une application Django sur un serveur Linux. Dans l'une des vues, une commande impression est exécutée et qu'une chaîne est imprimée. Comment puis-je savoir quelle était la chaîne imprimée? Y a-t-il quelques journaux que ces choses sont conservées?


0 commentaires

5 Réponses :


10
votes

La sortie doit être dans le terminal, où django a commencé. (Si vous le faites, je ne crois pas pas commencé directement, il y a un moyen de le lire)

Comme linkedlinked a souligné, il est le meilleur de ne pas utiliser Imprimer , car cela peut provoquer des exceptions! Mais ce n'est pas la seule raison: Il existe des modules (comme l'exploitation forestière) à ces fins et ils ont beaucoup plus d'options.

Ce site (même quand il est à partir de 2008) confirment mes déclarations:

Si vous voulez savoir ce qui se passe à l'intérieur d'un point de vue, le plus rapide est de déposer dans une déclaration d'impression. Le serveur de développement Sorties des instructions d'impression directement à la borne; il est l'alternative côté serveur à une alerte JavaScript ().

Si vous voulez être un peu plus sophistiqué avec votre exploitation forestière, il vaut la peine se tourner vers le module d'enregistrement de Python (partie de la bibliothèque standard). Vous pouvez le configurer dans votre settings.py: Il décrit ici, ce qu'il faut faire (voir sur le site)

Pour le débogage-fins vous pouvez également activer le mode debug ou utilisez django-debug-barre d'outils .

Hope it helps! :)


2 commentaires

C'est correct. De plus, si vous utilisez Apache pour serveur, les fichiers, je sais que Mod_WSGI jette une erreur irrécupérable chaque fois que vous appuyez sur une déclaration "Imprimer"; par exemple. Si vous faites IMPRIMER "TRAVAILLEMENT FINIT OK!" Dans votre application, votre script mourra (exception non capturée) à cette ligne lorsque vous le mettez sur Apache. Pour cette raison, j'évite d'utiliser Imprimer dans mes applications Django à tout prix.


@LinkedLinked: Seulement si vous n'utilisez pas les directives de configuration appropriées.



2
votes

L'impression montre bien avec "./MANAGE.PY RUNSERVER" ou d'autres variations - comme Joschua mentionne, il apparaît dans le terminal où vous l'avez commencé. Si vous exécutez FCGI de cron ou telle, cela ne fait que jeté jeté dans le néant et que vous le perdiez entièrement.

Pour des endroits où je veux "Imprimer" comme des avertissements ou des avis à sortir, j'utilise une instance de l'enregistreur de Python que appuie sur Syslog pour capturer la sortie et la mettre quelque part. J'instaine une instance de journalisation dans l'un des modules car il est chargé - modèles.py était l'endroit que j'ai cueilli, juste pour sa commodité et je savais qu'il serait toujours évalué avant que les demandes ne soient arrivées. P>

logger = logging.getLogger("djangosyslog")
logging.warning("Protocol problem: %s", "connection reset", extra=d)


0 commentaires

0
votes

A AVERTISSEMENT: Si vous essayez de déployer du code avec des déclarations d'impression sous WSGI, attendez-vous à ce que des choses se casseront. Utilisez plutôt le module de journalisation.


0 commentaires

5
votes

N'utilisez jamais Imprimer , comme une fois que vous avez déployé, il imprimera sur STDOUT et WGSI se cassera.

Utilisez la la journalisation . À des fins de développement, est vraiment facile à configurer. Sur votre projet __Init__.py:<


>xxxp>NOW Tout ce que vous vous connectez va à stardr, dans ce cas, votre terminal. xxx < p> plus Vous pouvez contrôler la verbosité sur votre paramètres.py avec un paramètre log_level.

0 commentaires

0
votes

Si vous utilisez Apache2 Server pour exécuter Django Application et activé des journaux d'accès et d'erreur, vos instructions d'impression seront imprimées dans les journaux d'erreur.

pendant que vous exécutez votre application, faites ce qui suit comme racine Code> Utilisateur sous Linux, P>

tail -f /path-to-error-file.log


0 commentaires