Ich habe eine kleine App auf Heroku. Wann immer ich die Protokolle sehen möchte, gehe ich zur Befehlszeile und mache es
heroku logs
Das zeigt mir nur etwa 100 Zeilen. Gibt es keine Möglichkeit, vollständige Protokolle für unsere Anwendung auf Heroku anzuzeigen?
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_drainsheroku run rails c
. Aktualisiert!heroku run cat log/production.log
?Die Protokollierung in Heroku hat sich erheblich verbessert!
Besser!
Referenzen: http://devcenter.heroku.com/articles/logging
AKTUALISIERT
Dies sind keine Add-Ons mehr, sondern Teil der Standardfunktionalität :)
quelle
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
oderheroku run bash
verbinden sich nicht mit einem aktuell ausgeführten Prüfstand. Es wird eine neue speziell für denbash
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 werdenheroku 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 .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 keineheroku run bash
statischen Protokolldateien. Pipe in Herokus Stream von Protokollereignissen für Ihre App mithilfeheroku logs
eines Protokollierungs-Add-Ons.quelle
Siehe auch einzelne Streams / Filter.
ZB nur Ihre Anwendungsprotokolle beenden
Oder sehen Sie nur die Router-Protokolle
Oder verkette sie
So gut..
quelle
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
quelle
Folgen Sie der Heroku-Protokollierung
Um Ihre Protokolle anzuzeigen, haben wir:
--num
(oder-n
) Option.quelle
heroku logs -t
zeigt uns die Live-Protokolle.quelle
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:Sie können auch in einem Echtzeit-Stream auf die Protokolle zugreifen, indem Sie:
Wenn die Protokolle Ihnen so etwas sagen:
Sie können dann auch über das Bash-Terminal über die Heroku-CLI darauf zugreifen:
quelle
/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.
quelle
für WAR-Dateien:
Ich habe kein Github verwendet, sondern direkt eine WAR-Datei hochgeladen (was ich als viel einfacher und schneller empfand).
Folgendes hat mir also geholfen:
Hoffe es wird jemandem helfen.
quelle
Sie müssen
-t
oder--tail
Option verwenden und Sie müssen Ihren Heroku-App-Namen definieren.quelle
Meine Lösung besteht darin, beim ersten Start der Anwendung ein vollständiges Protokoll zu erstellen, z.
Fügen
fgrep -vf
Sie dann hinzu , um es auf dem neuesten Stand zu halten, wie:Für eine kontinuierliche Protokollierung wiederholen Sie diese einfach alle x Minuten (oder Sekunden) mit watch.
quelle
Um das detaillierte Protokoll anzuzeigen, müssen Sie zwei Zeilen in die
production.rb
Datei einfügen:und dann durch Laufen
Sie können die detaillierten Protokolle sehen.
quelle
Ich mache es lieber so
Sie können das Skript im Hintergrund laufen lassen und die Protokolle aus der Textdatei jederzeit nach Ihren Wünschen filtern.
quelle
Sie müssen einige Protokolle entleeren lassen und sollten Ihre Protokolle dort entleeren, um alle Protokolle anzuzeigen (auch historische Protokolle verwalten):
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).
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
Der folgende Befehl zeigt die 1000 Anzahl von Protokollzeilen von Heroku an
quelle
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!
quelle
heroku logs -t
zeigt uns die Live-Protokolle.heroku logs -n 1500
für eine bestimmte Anzahl von ProtokollenTrotzdem würde ich empfehlen, ein Paper Trail Add-On zu verwenden, das bestimmte Vorteile hat und einen kostenlosen Basisplan hat.
quelle
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).
quelle
Für Zedernstapel siehe:
https://devcenter.heroku.com/articles/oneoff-admin-ps
Sie müssen ausführen:
Heroku Run Bash ...
quelle
heroku run bash
dreht einen neuen Prüfstand, um denbash
Befehl zu hosten . Das Dateisystem auf diesem Prüfstand enthält keine Protokolldateien von den "aktiven" Webprüfständen, sodass dieser Ansatz nicht funktioniert.