heroku logs
Heroku ist eine Hosting-Plattform, auf deren Protokolle über die Befehlszeile zugegriffen werden kann :
$ heroku logs
2014-07-17T06:24:02.216403+00:00 app[web.1]: Started
2014-07-17T06:24:02.216410+00:00 app[web.1]: Stopped
2014-07-17T06:24:02.216408+00:00 app[web.1]: Paused
Wie Sie oben sehen können, wird die chronologische Reihenfolge nicht eingehalten .
Heroku ist damit zufrieden und gibt keine besonderen Ratschläge.
Gibt es ein Tool oder Bash-Skript, mit dem ich Heroku-Protokolle sortieren kann?
Die Protokolle sind ziemlich klein, maximal 1500 Zeilen.
Kostenlos, Open Source, läuft in Linux Bash.
Sie könnten dies versuchen:
heroku logs > heroku.txt
sort -n -t\ -k1 heroku.txt
Das -n
sortiert Zahlen der Reihe nach, -t\
Bit verwendet ein Leerzeichen als Trennzeichen, -k1
verwendet Spalte eins (den Zeitstempel).
Ohne die Protokolle in eine separate Datei zu schreiben, nehme ich an, dass Sie Folgendes verwenden könnten:
heroku logs | sort -n -t\ -k1
Um in umgekehrter Reihenfolge zu sortieren ( -nr
):
heroku logs | sort -nr -t\ -k1
Ich habe ein kleines Skript geschrieben, um Live-Protokolle ( heroku logs -t
) zu sortieren.
Sie können laufen mit:
heroku logs -t | python delayed_sort.py
Wenn Sie die Färbung beibehalten möchten:
script -q -c "heroku logs -t" -a /dev/null | python delayed_sort.py
Das Skript enthält einfach einen Puffer der letzten 100 Protokollzeilen. Wenn der Puffer voll wird, wird die Zeile mit dem ältesten Zeitstempel ausgegeben (unter Verwendung von Heap-Queue für Effizienz ...). Der Puffer wird auch geleert, wenn 1 Sekunde lang keine neuen Protokollzeilen vorhanden sind.
Es besteht immer noch eine winzige Chance, dass die Zeilen unsortiert ausgegeben werden: eine Zeile mit einem Zeitstempel, der älter als die 100 vorhergehenden Zeilen ist, oder eine Zeile mit einem alten Zeitstempel nach einer Kommunikationspause von 1 Sekunde.
heroku-logs
, mit der script -q ...
Zeile.Wie von Gilles vorgeschlagen, ist dies am einfachsten und funktioniert einwandfrei:
heroku logs | sort
Nikolaus Raul
heroku logs | sort -n -t\ -k1
? Danke!Elliot Reed
Gilles 'SO-hör auf, böse zu sein'
heroku logs | sort
würde genauso gut funktionieren. Das Datumsformat hat die Eigenschaft, dass die lexikografische Reihenfolge der chronologischen Reihenfolge entspricht, da die Felder eine feste Breite haben und nach abnehmender Bedeutung geordnet sind.Elliot Reed