J'ai une petite application sur Heroku. Chaque fois que je veux voir les journaux, je vais à la ligne de commande et fais
heroku logs
Cela ne me montre qu'environ 100 lignes. N'y a-t-il pas moyen de voir les journaux complets pour notre application sur heroku?
Mise à jour (merci à dawmail333):
heroku logs -n 1500
ou, pour suivre les journaux vivre
heroku logs -t
Documentation du journal Heroku
Si vous avez besoin de plus de quelques milliers de lignes, vous pouvez utiliser heroku's Syslog Drains
Alternativement (ancienne méthode):
$ heroku run Rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
L’exploitation forestière s’est considérablement améliorée à Heroku!
$ heroku logs -n 500
Meilleur!
$ heroku logs --tail
références: http://devcenter.heroku.com/articles/logging
MIS À JOUR
Ce ne sont plus des add-ons, mais une partie de la fonctionnalité par défaut :)
Heroku considère les journaux comme des flux d'événements ordonnés dans le temps. L'accès aux fichiers *.log
sur le système de fichiers n'est pas recommandé dans un tel environnement pour diverses raisons.
Premièrement, si votre application a plus d'un dyno, chaque fichier journal ne représente qu'une vue partielle des événements de votre application. Vous devez regrouper manuellement tous les fichiers pour obtenir une vue complète.
Deuxièmement, le système de fichiers sur Heroku a une signification éphémère chaque fois que votre dyno est redémarré ou déplacé (ce qui se produit environ une fois par jour ) les fichiers journaux sont perdus. Ainsi, vous n'obtenez qu'une vue journalière dans les journaux de ce dyno unique.
Enfin, sur la pile de cèdre } _ exécuter heroku console
ou même heroku run bash
ne vous connecte pas à un dyno en cours d'exécution. Il en crée un nouveau spécifiquement pour la commande bash
. Cela s'appelle un processus ponctuel . En tant que tel, vous ne trouverez pas les fichiers journaux de vos autres dynos exécutant les processus http sur celui généré pour heroku run
.
Journalisation , et la visibilité en général, est un citoyen de premier plan sur Heroku et plusieurs outils permettent de résoudre ces problèmes. Tout d’abord, pour voir un flux d’événements d’application en temps réel sur tous les dynos et toutes les couches de l’application/pile, utilisez la commande heroku logs -t
pour afficher le résultat en sortie sur votre terminal.
$ heroku logs -t
2010-09-16T15:13:46-07:00 app[web.1]: Processing PostController#list (for 208.39.138.12 at 2010-09-16 15:13:46) [GET]
2010-09-16T15:13:46-07:00 app[web.1]: Rendering template within layouts/application
2010-09-16T15:13:46-07:00 heroku[router]: GET myapp.heroku.com/posts queue=0 wait=0ms service=1ms bytes=975
2010-09-16T15:13:47-07:00 app[worker.1]: 2 jobs processed at 16.6761 j/s, 0 failed ...
Cela fonctionne très bien pour observer le comportement de votre application maintenant. Si vous souhaitez stocker les journaux pendant de plus longues périodes, vous pouvez utiliser l'un des nombreux modules de journalisation qui fournissent la conservation des journaux, des alertes et des déclencheurs.
Enfin, si vous souhaitez stocker les fichiers journaux vous-même, vous pouvez configurer votre propre syslog drain afin de recevoir le flux d’événements de Heroku et de vous traiter/analyser vous-même.
Résumé: n'utilisez pas heroku console
ou heroku run bash
pour afficher les fichiers journaux statiques. Dirigez vers le flux d'événements de journal de Heroku pour votre application à l'aide de heroku logs
ou d'un module complémentaire de journalisation.
Voir également les flux/filtres individuels.
E.g queue seulement vos journaux d'application
heroku logs --source app -t
Ou ne voir que les journaux du routeur
heroku logs --ps router
Ou les enchaîner
heroku logs --source app --ps worker
Tellement bon..
Suivre sur Heroku Logging
Pour voir vos journaux, nous avons:
journaux de heroku
heroku journaux -n 200
heroku logs --tail
heroku logs --app your_app_name
Vous pouvez accéder à vos fichiers journaux à l'aide de la ligne de commande de Heroku Interface ( Utilisation de l'interface CLI ).
Si la CLI de Heroku est installée et que vous connaissez le nom de votre application (telle que https://myapp.herokuapp.com/
), vous pouvez exécuter la commande suivante:
heroku logs --tail --app=myapp
Vous pouvez également accéder aux journaux dans un flux en temps réel à l'aide de:
heroku logs --source app --tail --app=myapp
Si les journaux vous disent quelque chose comme ça:
npm ERR! Un journal complet de cette exécution peut être trouvé dans:
npm ERR! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
Ensuite, vous pouvez également y accéder via le terminal bash via Heroku CLI:
heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
heroku logs -t
nous montre les live logs.
Cela vaut peut-être la peine d’ajouter quelque chose comme le plan gratuit Papertrail à votre application. Aucune configuration, vous obtenez 7 jours de données de journalisation pouvant atteindre 10 Mo/jour et vous pouvez effectuer une recherche en arrière sur 2 jours de journaux.
pour les fichiers WAR:
Je n'ai pas utilisé github, j'ai plutôt téléchargé directement un fichier WAR (que j'ai trouvé beaucoup plus facile et rapide).
Donc, ce qui suit m'a aidé:
heroku logs --app appname
J'espère que ça va aider quelqu'un.
Pour voir le journal détaillé, vous devez insérer deux lignes dans le fichier production.rb
:
config.logger = Logger.new(STDOUT)
config.logger.level = Logger::DEBUG
puis en courant
heroku logs -t
vous pouvez voir les journaux détaillés.
Je préfère le faire de cette façon
heroku logs --tail | tee -a herokuLogs
Vous pouvez laisser le script s'exécuter en arrière-plan et vous pouvez simplement filtrer les journaux à partir du fichier texte comme vous le souhaitez à tout moment.
Je suggère d'utiliser un addon, j'utilise Logentries. Pour l'utiliser, lancez votre ligne de commande:
heroku addons:create logentries:le_tryit
(Cette commande crée l'addon pour un compte gratuit, mais vous pouvez évidemment mettre à niveau si vous le souhaitez)
Logentries vous permet d'économiser jusqu'à 5 Go de volume de journal par mois. Cette information est consultable par leur recherche de commande au cours des 7 derniers jours et contient des alertes en temps réel.
Donc, pour répondre à votre question, en utilisant cet addon, vous vous assurez que vos journaux ne sont plus perdus lorsque vous atteignez les 1500 lignes que Heroku enregistre par défaut. J'espère que cela t'aides! Passez une bonne journée!
Ma solution est d’obtenir un journal complet au premier démarrage de l’application, par exemple:
heroku logs -n 1500 > log
puis ajoutez fgrep -vf
pour le garder à jour, comme suit:
heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log
pour un enregistrement continu, il suffit de le parcourir en utilisant la surveillance toutes les x minutes (ou secondes).
heroku logs -t
nous montre les live logs. heroku logs -n 1500
pour un nombre spécifique de journaux
Mais je recommanderais quand même d’utiliser un complément papier qui présente certains avantages et propose un plan de base gratuit.
Vous devez utiliser les options -t
ou --tail
et définir le nom de votre application heroku.
heroku logs -t --app app_name