Réponses:
Mise à jour (merci à dawmail333):
heroku logs -n 1500
ou, pour suivre les journaux en direct
heroku logs -t
Documentation du journal Heroku
Si vous avez besoin de plus de quelques milliers de lignes, vous pouvez utiliser les drains Syslog d'Heroku
Alternativement (ancienne méthode):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
heroku logs -n 1500
, c'est la meilleure méthode disponible sur Cedar. Si vous avez besoin de plus de lignes que cela, vous avez besoin d'un drain syslog: devcenter.heroku.com/articles/logging#syslog_drains
heroku run rails c
. Mise à jour!
heroku run cat log/production.log
?
La journalisation s'est considérablement améliorée dans Heroku!
$ heroku logs -n 500
Meilleur!
$ heroku logs --tail
références: http://devcenter.heroku.com/articles/logging
MISE À JOUR
Ce ne sont plus des modules complémentaires, mais une partie de la fonctionnalité par défaut :)
Heroku traite les journaux comme des flux d'événements ordonnés dans le temps. Accéder*.log
fichiers sur le système de fichiers n'est pas recommandé dans un tel environnement pour diverses raisons.
Tout d'abord, si votre application possède plusieurs dyno, chaque fichier journal ne représente qu'une vue partielle des événements de votre application. Vous devez agréger manuellement tous les fichiers pour obtenir la vue complète.
Deuxièmement, le système de fichiers sur Heroku est éphémère, ce qui signifie 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 obtenez au maximum une vue d'une journée dans les journaux de ce seul dyno.
Enfin, sur la pile Cedar en cours d'exécution heroku console
ou même heroku run bash
ne vous connecte pas à un dyno en cours d'exécution. Il en génère un nouveau spécifiquement pour la bash
commande. C'est ce qu'on appelle un processus ponctuel . En tant que tel, vous ne trouverez pas les fichiers journaux de vos autres dynos qui exécutent les processus http réels sur celui généré heroku run
.
La journalisation , et la visibilité en général, est un citoyen de première classe sur Heroku et il existe plusieurs outils pour 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 heroku logs -t
commande pour suivre la sortie vers 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 en ce moment. Si vous souhaitez stocker les journaux pendant des périodes plus longues, vous pouvez utiliser l'un des nombreux modules complémentaires de journalisation qui fournissent la conservation des journaux, les alertes et les déclencheurs.
Enfin, si vous souhaitez stocker les fichiers journaux vous-même, vous pouvez configurer votre propre drain Syslog pour recevoir le flux d'événements de Heroku et post-traiter / analyser vous-même.
Résumé: n'utilisez pas heroku console
ou heroku run bash
pour afficher les fichiers journaux statiques. Connectez-vous au flux d'événements de journal de Heroku pour votre application à l'aide d' heroku logs
un module complémentaire de journalisation.
Voir également les flux / filtres individuels.
Par exemple, ne conservez que vos journaux d'application
heroku logs --source app -t
Ou voir uniquement les journaux du routeur
heroku logs --ps router
Ou enchaînez-les ensemble
heroku logs --source app --ps worker
Tellement bon..
heroku logs --ps web.1
(avec 1 dyno)
Eh bien, les réponses ci-dessus sont très utiles, elles vous aideront à visualiser à partir de la ligne de commande. Alors que si vous voulez faire à partir de votre interface graphique, vous devez vous connecter à votre compte heroku, puis sélectionner votre application et enfin cliquer sur afficher les journaux
Suivez la journalisation Heroku
Pour consulter vos journaux, nous avons:
heroku logs
--num
(ou -n
) option.
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
heroku logs -t
nous montre les journaux en direct.
Vous pouvez accéder à vos fichiers journaux à l'aide de l'interface de ligne de commande de Heroku ( utilisation CLI ).
Si l'interface CLI de Heroku est installée et que vous connaissez le nom de votre application (comme 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 en utilisant:
heroku logs --source app --tail --app=myapp
Si les journaux vous indiquent quelque chose comme ceci:
npm ERR! Un journal complet de cette course peut être trouvé dans:
npm ERR! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
Ensuite, vous pouvez également y accéder en utilisant le terminal bash via Heroku CLI:
heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
/usr/bin/less: cannot execute binary files
Cela pourrait valoir la peine d'ajouter quelque chose comme le plan Papertrail gratuit à votre application. Aucune configuration, et vous obtenez 7 jours de données de journalisation jusqu'à 10 Mo / jour, et pouvez rechercher dans 2 jours de journaux.
Vous devez utiliser l' option -t
ou --tail
et vous devez définir le nom de votre application heroku.
heroku logs -t --app app_name
Ma solution consiste à obtenir un journal complet au premier démarrage de l'application, comme:
heroku logs -n 1500 > log
puis ajoutez fgrep -vf
pour le garder à jour, comme:
heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log
pour une journalisation continue, il suffit de l'itérer en utilisant watch pour toutes les x minutes (ou secondes).
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 du fichier texte comme vous le souhaitez à tout moment.
Vous devez avoir un vidage de certains journaux implémenté et vous devez y vider vos journaux, pour voir tous les journaux (gérer également les journaux historiques):
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name
Connectez-vous ensuite à votre serveur Splunk et recherchez un nombre illimité de journaux. J'utilise Splunk et cela fonctionne parfaitement bien pour moi.
Deuxième option - Vous pouvez acheter un module complémentaire à votre application, comme indiqué ci-dessous: (Je n'ai pas utilisé ces options, mais ce sont celles disponibles).
Vous pouvez également consulter les options ci-dessous: Si vous souhaitez avoir vos journaux au format JSON, car cela vous aidera si vous transférez vos journaux vers un système externe comme Splunk / ELK, il deviendrait facile (en termes de performances également) de rechercher en JSON.
https://github.com/goodeggs/heroku-log-normalizer
Il n'a pas Readme.md, mais une explication est donnée à https://github.com/goodeggs/bites/issues/20
enfin
Et vous pouvez toujours utiliser la commande ci-dessous comme mentionné par d'autres utilisateurs déjà:
La commande suivante réduira les journaux générés sur heroku
heroku logs -t -a <app_name>
La commande suivante montrera le nombre de 1000 lignes de journaux de heroku
heroku logs -n 1000 -a <app_name>
Notez que seulement 1500 dernières lignes de journaux sont disponibles et le reste d'entre eux est supprimé de Heroku Dyno.
Je suggère d'utiliser un addon, j'utilise Logentries. Pour l'utiliser, exécutez dans votre ligne de commande:
heroku addons:create logentries:le_tryit
(cette commande crée l'addon pour un compte gratuit mais vous pouvez clairement 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 commandes au cours des 7 derniers jours et elle dispose d'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!
heroku logs -t
nous montre les journaux en direct.
heroku logs -n 1500
pour un nombre spécifique de journaux
Mais je recommanderais tout de même d'utiliser l'add-on Paper Trail qui présente certains avantages et propose un plan de base gratuit.
Vous pouvez utiliser
heroku logs -n 1500
Mais ce n'est pas une approche recommandée (en d'autres termes ne vous montre pas la vraie image)
Je vous suggère de brancher un outil de journalisation. (sumoLogic, paper trail n all) comme module complémentaire
Ils ont tous une version gratuite (avec quelques limitations, bien que suffisante pour une petite application ou un env dev, qui fournira de bonnes informations et un outil pour analyser les journaux)
Pour la pile de cèdre, voir:
https://devcenter.heroku.com/articles/oneoff-admin-ps
vous devez exécuter:
heroku run bash ...
heroku run bash
tourne un nouveau dynamo pour héberger la bash
commande. Le système de fichiers de ce banc d'essai ne contiendra aucun fichier journal des bancs d'essai Web «actifs», de sorte que cette approche ne fonctionnera pas.