it-swarm.com.de

heroku - wie man alle protokolle sieht

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? 

432
josh

Update (Dank an dawmail333):

heroku logs -n 1500

oder, um die Protokolle live zu verfolgen 

heroku logs -t 

Heroku-Protokolldokumentation

Wenn Sie mehr als ein paar tausend Zeilen benötigen, können Sie Herokus Syslog Drains verwenden.

Alternativ (alte Methode):

$ heroku run Rails c
File.open('log/production.log', 'r').each_line { |line| puts line }
730
glebm

Die Protokollierung hat sich in Heroku stark verbessert!

$ heroku logs -n 500

Besser!

$ heroku logs --tail

referenzen: http://devcenter.heroku.com/articles/logging

AKTUALISIERTE

Dies sind keine Add-Ons mehr, sondern Teil der Standardfunktionalität :)

136
nessur

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 Dyno hat, stellt jede Protokolldatei nur einen Teil der Ereignisse in Ihrer App dar. Sie müssen alle Dateien manuell zusammenfassen, um die vollständige Ansicht zu erhalten.

Zweitens ist das Dateisystem auf Heroku von kurzlebiger Bedeutung, wenn Ihr Dynamo neu gestartet oder verschoben wird (was etwa bei einmal täglich geschieht) die Protokolldateien verloren gehen. In den Protokollen dieser einzelnen Dynastie erhalten Sie also höchstens einen Blick auf den Tag.

Auf dem Cedar-Stack , der heroku console oder sogar heroku run bash ausgeführt wird, verbindet Sie Sie nicht mit einem aktuell laufenden Dyno. Speziell für den Befehl bash wird ein neuer erzeugt. Dies wird als einmaliger Prozess bezeichnet. Daher werden Sie die Protokolldateien für Ihre anderen Dynos nicht finden, die die tatsächlichen http-Prozesse auf dem für heroku run erstellten ausführen.

Logging und Sichtbarkeit im Allgemeinen ist ein erstklassiger Bürger von Heroku, und es gibt mehrere Tools, die diese Probleme angehen. Um einen Echtzeit-Stream von Anwendungsereignissen über alle Dynos und alle Layer der Anwendung/stack hinweg anzuzeigen, verwenden Sie den Befehl heroku logs -t, um die Ausgabe an Ihr Terminal zu beenden.

$ 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 Protokollspeicherung, Warnmeldungen und Auslöser bereitstellen.

Wenn Sie die Protokolldateien selbst speichern möchten, können Sie schließlich ein eigenes syslog drain einrichten, um den Ereignisstrom von Heroku zu empfangen und sich selbst zu analysieren.

Zusammenfassung: Verwenden Sie nicht heroku console oder heroku run bash, um statische Protokolldateien anzuzeigen. Steigen Sie in Herokus Protokollereignisstrom für Ihre App ein, indem Sie heroku logs oder ein Protokollierungs-Add-On verwenden.

48
Ryan Daigle

Siehe auch einzelne Streams/Filter. 

Zum Beispiel nur Ihre Anwendungsprotokolle

heroku logs --source app -t

Oder sehen Sie nur die Router-Protokolle

heroku logs --ps router

Oder kette sie zusammen 

heroku logs --source app --ps worker

So gut..

19
Shawn Vader

Die obigen Antworten sind sehr hilfreich, da sie Ihnen helfen, von der Kommandozeile aus zu sehen. Wenn Sie dies von Ihrer GUI aus tun möchten, müssen Sie sich bei Ihrem Heroku-Konto anmelden und dann Ihre Anwendung auswählen und schließlich auf Protokolle anzeigen klicken

 image view

17

Folge auf heroku logging

Um Ihre Protokolle anzusehen, haben wir:

  1. der Befehl logs führt standardmäßig 100 Protokollzeilen erneut aus.

heroku-Protokolle

  1. zeigt maximal 1500 Zeilen, Option --num (oder -n).

heroku-Protokolle -n 200

  1. Protokolle in Echtzeit anzeigen

heroku-Protokolle - Schwanz

  1. Wenn Sie viele Apps auf Heroku haben

heroku-Protokolle --app Ihr_App_Name

11
Minh Nguyen

Sie können auf Ihre Protokolldateien über die Befehlszeile von Heroku ( CLI-Verwendung ) zugreifen. 

Wenn die CLI von Heroku installiert ist und Sie Ihren Anwendungsnamen kennen (wie https://myapp.herokuapp.com/), können Sie den folgenden Befehl ausführen:

heroku logs --tail --app=myapp

Sie können auch auf die Protokolle in einem Echtzeit-Stream zugreifen:

heroku logs --source app --tail --app=myapp

Wenn die Protokolle 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

Dann können Sie auch über das bash-Terminal über Heroku CLI darauf zugreifen:

heroku run bash --app=myapp
less ./.npm/_logs/2017-07-11T08_29_45_291Z-debug.log
8

heroku logs -t zeigt uns die Live-Protokolle.

8
ndrx42

Vielleicht lohnt es sich, etwas wie den freien Papertrail-Plan zu Ihrer App hinzuzufügen. Keine Konfiguration, und Sie erhalten 7 Tage Protokollierungsdaten von bis zu 10 MB/Tag. Außerdem können Sie die Protokollierung von 2 Tagen durchführen.

7
clem

für WAR-Dateien:

Ich habe nicht github verwendet, sondern direkt eine WAR-Datei hochgeladen (was ich viel einfacher und schneller fand).

Also hat mir folgendes geholfen:

heroku logs --app appname

Ich hoffe es hilft jemandem.

3
Ula

Um das detaillierte Protokoll anzuzeigen, müssen Sie zwei Zeilen in die production.rb-Datei einfügen:

config.logger = Logger.new(STDOUT)
config.logger.level = Logger::DEBUG

und dann durch Laufen

heroku logs -t

sie können die detaillierten Protokolle sehen.

2
sumit

Ich mache es lieber so

heroku logs --tail | tee -a herokuLogs

Sie können das Skript im Hintergrund laufen lassen und die Protokolle jederzeit einfach aus der Textdatei filtern.

2
Ashish Pahwa

Ich schlage vor, ein Addon zu verwenden, ich verwende Logentries. Um es zu benutzen, führe es in deiner Kommandozeile aus:

heroku addons:create logentries:le_tryit

(Mit diesem Befehl wird das Addon für ein kostenloses Konto erstellt. Sie können jedoch selbstverständlich ein Upgrade durchführen, wenn Sie möchten.)

Mit Logentries können Sie bis zu 5 GB Protokollvolumen pro Monat speichern. Diese Informationen können über ihre Befehlssuche in den letzten 7 Tagen durchsucht werden und verfügen über Echtzeit-Alarme.

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!

1
Jose Paez

Meine Lösung besteht darin, beim ersten Start der Anwendung ein vollständiges Protokoll zu erstellen, z.

heroku logs -n 1500 > log

dann fgrep -vf hinzufügen, um es auf dem neuesten Stand zu halten, wie:

heroku logs -n 1500 > newlog ; fgrep -vf log newlog >> log

für die fortlaufende Protokollierung iterieren Sie einfach alle x Minuten (oder Sekunden) mit watch. 

1
kpsk kpsk

heroku logs -t zeigt uns die Live-Protokolle. heroku logs -n 1500 für eine bestimmte Anzahl von Protokollen

Trotzdem würde ich empfehlen, Paper Trail Add-On zu verwenden, das bestimmte Vorteile bietet und einen kostenlosen Basisplan hat.

0
svikramjeet

Sie müssen die Option -t oder --tail verwenden und den Namen der Heroku-App definieren.

heroku logs -t --app app_name
0
kotapeter