¿Dónde almacena forever la salida de console.log?

105

Lo instalé para siempre y lo estoy usando, encontrándolo bastante divertido.

Pero me di cuenta de que los registros se colocan en otro lugar. ¿Hay algún consejo?

AGamePlayer
fuente

Respuestas:

134

Forever toma las opciones de la línea de comandos para la salida:

-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

Por ejemplo:

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

Vea aquí para más información

Bryanmac
fuente
7
¿Cuál es la ruta predeterminada si no especifico ningún parámetro pero solo uso like forever myapp? ¡Gracias!
AGamePlayer
3
No lo veo documentado, creo que cambió con el tiempo. Veo registros antiguos en la carpeta ~ / .forever. Pero actualicé muy recientemente y al menos en mi mac, si no especifico un nombre de archivo de registro, escribe console.log en la terminal.
bryanmac
1
-a también es necesaria como opción si los archivos ya existen. forever -a -o out.log -e err.log my-script.js
swateek
2
¿Cuál es la diferencia entre LOGFILE y OUTFILE? ¡Para mí parece que contienen exactamente la misma información!
Dominic
3
@Dominic LOGFILE incluye toda la salida, incluida la salida del proceso forever, OUTFILE solo incluye stdout de su script secundario.
Joseph238
81

Forever, de forma predeterminada, pondrá los registros en un archivo aleatorio en la ~/.forever/carpeta.

Debe ejecutar forever listpara ver los procesos en ejecución y su archivo de registro correspondiente.

Salida de muestra

>>> 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

Sin embargo, probablemente sea mejor especificar con -lcomo lo menciona bryanmac.

Liyan Chang
fuente
1
No siempre es un archivo aleatorio. Si especificó un uid con el indicador --uid al iniciar, se creará un archivo de registro utilizando el uid especificado.
ddelrio1986
12

prueba el comando

> forever logs

o

> sudo forever logs

obtendrá la ubicación del archivo de registro

Moh .S
fuente
5

Esto funcionó para mí:

forever -a -o out.log -e err.log app.js
Zubair
fuente
5

Debe hacer lo normal forever start script.js para comenzar, y para verificar la consola / los registros de error, use forever logs esto imprimirá la lista de todos los registros que se almacenan para siempre y luego puede usar tail -f /path/to/logs/file.logy esto imprimirá registros en vivo en su ventana. presione ctrl + z para detener la impresión de registros.

BanwariLal Bamalwa
fuente
3

Es una pregunta antigua, pero me encontré con los mismos problemas. Si quieres ver la salida en vivo, puedes ejecutar

forever logs

Esto mostraría la ruta del archivo de registros, así como el número del script. Luego puedes usar

forever logs 0 -f

0 debe reemplazarse por el número del script para el que desea ver la salida.

kan
fuente
1

La ayuda es su mejor salvador, hay una acción de registros a la que puede llamar para verificar los registros de todos los procesos en ejecución.

forever --help

Muestra los comandos

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

Salida de muestra del comando anterior, para tres procesos en ejecución. Los resultados de console.log se almacenan en estos registros.

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
bhupen.chn
fuente
1

De forma predeterminada, siempre coloca todos los archivos que necesita en /$HOME/.forever. Si desea cambiar esa ubicación, simplemente configure la variable de entorno FOREVER_ROOT cuando esté ejecutando para siempre:

FOREVER_ROOT=/etc/forever forever start index.js
Loup G
fuente
0

Debe agregar los especificadores de destino del registro antes del nombre de archivo para ejecutar. Entonces

para siempre -e /ruta/error.txt -o /ruta/output.txt iniciar index.js

usuario450821
fuente
0

Basado en la respuesta de Bryanmac. Solo estoy guardando todos los registros en un archivo y luego lo leo con tail. Una forma sencilla pero eficaz de hacer esto.

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

Niko9911
fuente