Antworten:
Update (danke an dawmail333):
heroku logs -n 1500
oder, um die Protokolle live zu verfolgen
heroku logs -t
Wenn Sie mehr als ein paar tausend Zeilen benötigen, können Sie die Syslog-Abflüsse von Heroku verwenden
Alternativ (alte Methode):
$ heroku run rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
heroku logs -n 1500
es einfach , es ist die beste auf Cedar verfügbare Methode. Wenn Sie mehr Zeilen benötigen, benötigen Sie einen Syslog-Abfluss: devcenter.heroku.com/articles/logging#syslog_drains
heroku run rails c
. Aktualisiert!
heroku run cat log/production.log
?
Die Protokollierung in Heroku hat sich erheblich verbessert!
$ heroku logs -n 500
Besser!
$ heroku logs --tail
Referenzen: http://devcenter.heroku.com/articles/logging
AKTUALISIERT
Dies sind keine Add-Ons mehr, sondern Teil der Standardfunktionalität :)
Heroku behandelt Protokolle als zeitlich geordnete Ereignisströme. Der Zugriff auf *.log
Dateien im Dateisystem wird in einer solchen Umgebung aus verschiedenen Gründen nicht empfohlen.
Wenn Ihre App mehr als einen Prüfstand hat, repräsentiert jede Protokolldatei nur eine Teilansicht der Ereignisse Ihrer App. Sie müssten alle Dateien manuell aggregieren, um die vollständige Ansicht zu erhalten.
Zweitens ist das Dateisystem auf Heroku kurzlebig, was bedeutet, dass die Protokolldateien verloren gehen, wenn Ihr Prüfstand neu gestartet oder verschoben wird (was ungefähr einmal am Tag geschieht ). Sie erhalten also höchstens einen Tagesblick in die Protokolle dieses einzelnen Prüfstands.
Schließlich werden Sie auf dem Cedar-Stack ausgeführt heroku console
oder heroku run bash
verbinden sich nicht mit einem aktuell ausgeführten Prüfstand. Es wird eine neue speziell für den bash
Befehl erzeugt. Dies wird als einmaliger Vorgang bezeichnet . Daher finden Sie nicht die Protokolldateien für Ihre anderen Dynos, in denen die tatsächlichen http-Prozesse auf dem für sie erstellten ausgeführt werden heroku run
.
Die Protokollierung und Sichtbarkeit im Allgemeinen ist ein erstklassiger Bürger von Heroku, und es gibt verschiedene Tools, mit denen diese Probleme behoben werden können. Um einen Echtzeitstrom von Anwendungsereignissen über alle Dynos und alle Ebenen der Anwendung / des Stapels hinweg anzuzeigen, verwenden Sie zunächst den heroku logs -t
Befehl, um die Ausgabe an Ihr Terminal zu steuern .
$ 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 ...
Dies funktioniert hervorragend, um das Verhalten Ihrer Anwendung jetzt zu beobachten. Wenn Sie die Protokolle über einen längeren Zeitraum speichern möchten, können Sie eines der vielen Protokollierungs-Add-Ons verwenden , die Protokollaufbewahrung, Warnungen und Auslöser bereitstellen.
Wenn Sie die Protokolldateien selbst speichern möchten, können Sie Ihren eigenen Syslog-Drain einrichten, um den Ereignisstrom von Heroku zu empfangen und sich selbst zu verarbeiten / zu analysieren.
Zusammenfassung: Verwenden heroku console
oder verwenden Sie keine heroku run bash
statischen Protokolldateien. Pipe in Herokus Stream von Protokollereignissen für Ihre App mithilfe heroku logs
eines Protokollierungs-Add-Ons.
Siehe auch einzelne Streams / Filter.
ZB nur Ihre Anwendungsprotokolle beenden
heroku logs --source app -t
Oder sehen Sie nur die Router-Protokolle
heroku logs --ps router
Oder verkette sie
heroku logs --source app --ps worker
So gut..
heroku logs --ps web.1
(mit 1 Prüfstand)
Nun, die obigen Antworten sind sehr hilfreich. Sie helfen Ihnen, sie über die Befehlszeile anzuzeigen. Wenn Sie dies über Ihre GUI tun möchten, müssen Sie sich bei Ihrem Heroku-Konto anmelden, Ihre Anwendung auswählen und schließlich auf Protokolle anzeigen klicken
Folgen Sie der Heroku-Protokollierung
Um Ihre Protokolle anzuzeigen, haben wir:
heroku logs
--num
(oder -n
) Option.
heroku logs -n 200
heroku logs --tail
heroku logs --app your_app_name
heroku logs -t
zeigt uns die Live-Protokolle.
Sie können über die Befehlszeilenschnittstelle ( CLI-Verwendung ) von Heroku auf Ihre Protokolldateien zugreifen .
Wenn die CLI von Heroku installiert ist und Sie Ihren Anwendungsnamen (wie https://myapp.herokuapp.com/
) kennen, können Sie den folgenden Befehl ausführen:
heroku logs --tail --app=myapp
Sie können auch in einem Echtzeit-Stream auf die Protokolle zugreifen, indem Sie:
heroku logs --source app --tail --app=myapp
Wenn die Protokolle Ihnen so etwas sagen:
npm ERR! Ein vollständiges Protokoll dieses Laufs finden Sie in:
npm ERR! /app/.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
Sie können dann auch über das Bash-Terminal über die Heroku-CLI darauf zugreifen:
heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
/usr/bin/less: cannot execute binary files
Es könnte sich lohnen , Ihrer App so etwas wie den kostenlosen Papertrail-Plan hinzuzufügen . Keine Konfiguration, und Sie erhalten 7 Tage Protokolldaten bis zu 10 MB / Tag und können 2 Tage lang Protokolle durchsuchen.
Sie müssen -t
oder --tail
Option verwenden und Sie müssen Ihren Heroku-App-Namen definieren.
heroku logs -t --app app_name
Meine Lösung besteht darin, beim ersten Start der Anwendung ein vollständiges Protokoll zu erstellen, z.
heroku logs -n 1500 > log
Fügen fgrep -vf
Sie dann hinzu , um es auf dem neuesten Stand zu halten, wie:
heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log
Für eine kontinuierliche Protokollierung wiederholen Sie diese einfach alle x Minuten (oder Sekunden) mit watch.
Ich mache es lieber so
heroku logs --tail | tee -a herokuLogs
Sie können das Skript im Hintergrund laufen lassen und die Protokolle aus der Textdatei jederzeit nach Ihren Wünschen filtern.
Sie müssen einige Protokolle entleeren lassen und sollten Ihre Protokolle dort entleeren, um alle Protokolle anzuzeigen (auch historische Protokolle verwalten):
heroku drains:add syslog+tls://splunk-server.com:514 -a app_name
Melden Sie sich dann bei Ihrem Splunk-Server an und suchen Sie nach einer beliebigen Anzahl von Protokollen. Ich benutze Splunk und das funktioniert perfekt für mich.
Zweite Option - Sie können ein Add-On zu Ihrer App erwerben, wie unten angegeben: (Ich habe diese Optionen nicht verwendet, es sind jedoch die verfügbaren).
Sie können sich auch die folgenden Optionen ansehen: Wenn Sie Ihre Protokolle im JSON-Format haben möchten, da es hilfreich ist, wenn Sie Ihre Protokolle auf ein externes System wie Splunk / ELK übertragen, wird die Suche einfach (auch in Bezug auf die Leistung) in JSON.
https://github.com/goodeggs/heroku-log-normalizer
Readme.md ist nicht vorhanden, aber einige Erklärungen finden Sie unter https://github.com/goodeggs/bites/issues/20
zuletzt
Und Sie können immer den folgenden Befehl verwenden, wie bereits von anderen Benutzern erwähnt:
Der folgende Befehl beendet die generierenden Protokolle auf Heroku
heroku logs -t -a <app_name>
Der folgende Befehl zeigt die 1000 Anzahl von Protokollzeilen von Heroku an
heroku logs -n 1000 -a <app_name>
Beachten Sie, dass nur 1500 aktuelle Protokollzeilen verfügbar sind und der Rest von ihnen aus dem Heroku-Dyno gelöscht wird.
Ich schlage vor, ein Addon zu verwenden, ich verwende Logentries. Um es zu verwenden, führen Sie es in Ihrer Befehlszeile aus:
heroku addons:create logentries:le_tryit
(Dieser Befehl erstellt das Addon für ein kostenloses Konto, aber Sie können natürlich ein Upgrade durchführen, wenn Sie möchten.)
Mit Logentries können Sie bis zu 5 GB Protokollvolumen pro Monat sparen. Diese Informationen können über die Befehlssuche innerhalb der letzten 7 Tage durchsucht werden und enthalten Echtzeitwarnungen.
Um Ihre Frage zu beantworten, stellen Sie mit diesem Addon sicher, dass Ihre Protokolle nicht mehr verloren gehen, wenn Sie die 1500 Zeilen erreichen, die Heroku standardmäßig speichert. Hoffe das hilft! Ich wünsche ihnen einen wunderbaren Tag!
heroku logs -t
zeigt uns die Live-Protokolle.
heroku logs -n 1500
für eine bestimmte Anzahl von Protokollen
Trotzdem würde ich empfehlen, ein Paper Trail Add-On zu verwenden, das bestimmte Vorteile hat und einen kostenlosen Basisplan hat.
Sie können verwenden
heroku logs -n 1500
Dies ist jedoch kein empfohlener Ansatz (mit anderen Worten, es wird nicht das tatsächliche Bild angezeigt).
Ich würde vorschlagen, dass Sie ein Protokollierungstool anschließen. (sumoLogic, paper trail n all) als Add-On
Sie haben alle eine kostenlose Version (mit wenigen Einschränkungen, obwohl genug für eine kleine App oder eine Entwickler-Umgebung, die gute Einblicke und Tools zum Analysieren von Protokollen bietet).
Für Zedernstapel siehe:
https://devcenter.heroku.com/articles/oneoff-admin-ps
Sie müssen ausführen:
Heroku Run Bash ...
heroku run bash
dreht einen neuen Prüfstand, um den bash
Befehl zu hosten . Das Dateisystem auf diesem Prüfstand enthält keine Protokolldateien von den "aktiven" Webprüfständen, sodass dieser Ansatz nicht funktioniert.