Wo wird die Ausgabe von console.log für immer gespeichert?


105

Ich habe es für immer installiert und benutze es, finde es ziemlich lustig.

Aber mir wurde klar, dass die Protokolle woanders abgelegt werden. Gibt es irgendwelche Tipps?

Antworten:


134

Forever verwendet Befehlszeilenoptionen für die Ausgabe:

-l  LOGFILE      Logs the forever output to LOGFILE
-o  OUTFILE      Logs stdout from child script to OUTFILE
-e  ERRFILE      Logs stderr from child script to ERRFILE

Beispielsweise:

forever start -o out.log -e err.log my-script.js

Sehen Sie hier für weitere Informationen


7
Was ist der Standardpfad, wenn ich keine Parameter spezifiziere, sondern nur like verwende forever myapp? Vielen Dank!
AGamePlayer

3
Ich sehe es nicht dokumentiert - ich denke, es hat sich im Laufe der Zeit geändert. Ich sehe alte Protokolle im Ordner ~ / .forever. Aber ich habe vor kurzem aktualisiert und zumindest auf meinem Mac, wenn ich keinen Protokolldateinamen angegeben habe, schreibt es console.log in das Terminal.
Bryanmac

1
-a wird auch als Option benötigt, wenn die Dateien bereits vorhanden sind. für immer -a -o out.log -e err.log my-script.js
swateek

2
Was ist der Unterschied zwischen LOGFILE und OUTFILE? Für mich scheinen sie genau die gleichen Informationen zu enthalten!
Dominic

3
@Dominic LOGFILE enthält alle Ausgaben einschließlich der Ausgabe des Forever-Prozesses. OUTFILE enthält nur stdout aus Ihrem untergeordneten Skript.
Joseph238

81

Für immer werden Protokolle standardmäßig in einer zufälligen Datei im ~/.forever/Ordner abgelegt .

Sie sollten ausführen forever list, um die ausgeführten Prozesse und die entsprechende Protokolldatei anzuzeigen.

Beispielausgabe

>>> forever list
info:    Forever processes running
data:        uid  command       script forever pid  logfile                         uptime
data:    [0] 6n71 /usr/bin/node app.js 2233    2239 /home/vagrant/.forever/6n71.log 0:0:0:1.590

Es ist jedoch wahrscheinlich am besten, mit zu spezifizieren, -lwie von bryanmac erwähnt.


1
Es ist nicht immer eine zufällige Datei. Wenn Sie beim Start eine UID mit dem Flag --uid angegeben haben, wird eine Protokolldatei mit der angegebenen UID erstellt.
ddelrio1986


12

Versuchen Sie den Befehl

> forever logs

oder

> sudo forever logs

Sie erhalten den Speicherort der Protokolldatei


5

Das hat bei mir funktioniert:

forever -a -o out.log -e err.log app.js

5

Um zu forever start script.js starten und um Konsolen- / Fehlerprotokolle zu überprüfen , müssen Sie normal vorgehen. Verwenden Sie forever logs diese Option, um eine Liste aller Protokolle zu drucken, die für immer gespeichert sind. Anschließend können Sie sie verwenden. tail -f /path/to/logs/file.logDadurch werden Live-Protokolle in Ihr Fenster gedruckt. Drücken Sie Strg + Z, um den Druck der Protokolle zu stoppen.


3

Es ist eine alte Frage, aber ich bin auf die gleichen Probleme gestoßen. Wenn Sie eine Live-Ausgabe sehen möchten, können Sie diese ausführen

forever logs

Dies würde den Pfad der Protokolldatei sowie die Nummer des Skripts anzeigen. Sie können dann verwenden

forever logs 0 -f

0 sollte durch die Nummer des Skripts ersetzt werden, für das die Ausgabe angezeigt werden soll.


1

Hilfe ist Ihr bester Retter. Es gibt eine Protokollaktion, die Sie aufrufen können, um Protokolle für alle laufenden Prozesse zu überprüfen.

forever --help

Zeigt die Befehle an

logs                Lists log files for all forever processes
logs <script|index> Tails the logs for <script|index>

Beispielausgabe des obigen Befehls für drei laufende Prozesse. Die Ausgaben von console.log werden in diesen Protokollen gespeichert.

info:    Logs for running Forever processes
data:        script    logfile
data:    [0] server.js /root/.forever/79ao.log
data:    [1] server.js /root/.forever/ZcOk.log
data:    [2] server.js /root/.forever/L30K.log

1

Standardmäßig werden alle benötigten Dateien für immer in /$HOME/.forever abgelegt. Wenn Sie diesen Speicherort ändern möchten, legen Sie einfach die Umgebungsvariable FOREVER_ROOT fest, wenn Sie für immer ausgeführt werden:

FOREVER_ROOT=/etc/forever forever start index.js

0

Sie müssen die Protokollzielspezifizierer vor dem auszuführenden Dateinamen hinzufügen. So

für immer -e /path/error.txt -o /path/output.txt start index.js


0

Basierend auf Bryanmacs Antwort. Ich speichere nur alle Protokolle in einer Datei und lese sie dann mit dem Schwanz. Einfache, aber effektive Möglichkeit, dies zu tun.

forever -o common.log -e common.log index.js && tail -f common.log

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.