Onde armazena para sempre a saída do console.log?

105

Instalei para sempre e estou usando, achando muito engraçado.

Mas percebi que os logs são colocados em outro lugar. Existe alguma dica?

AGamePlayer
fonte

Respostas:

134

Forever leva opções de linha de comando para a saída:

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

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

Veja aqui para mais informações

Bryanmac
fonte
7
qual é o caminho padrão se eu não especificar nenhum parâmetro, mas apenas usar like forever myapp? obrigado!
AGamePlayer
3
Não vejo isso documentado - acho que mudou com o tempo. Vejo registros antigos na pasta ~ / .forever. Mas eu atualizei muito recentemente e pelo menos no meu mac se eu não especificar um nome de arquivo de log, ele grava console.log no terminal.
bryanmac de
1
-a também é necessário como uma opção se os arquivos já existirem. forever -a -o out.log -e err.log my-script.js
swateek
2
Qual é a diferença entre LOGFILE e OUTFILE? Para mim, parece que eles contêm exatamente as mesmas informações!
Dominic
3
@Dominic LOGFILE inclui todas as saídas, incluindo a saída do processo forever, OUTFILE inclui apenas stdout de seu script filho.
Joseph238 de
81

Forever, por padrão, irá colocar os logs em um arquivo aleatório na ~/.forever/pasta.

Você deve executar forever listpara ver os processos em execução e seu arquivo de log correspondente.

Saída de amostra

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

No entanto, é provavelmente melhor especificar -lcomo mencionado por bryanmac.

Liyan Chang
fonte
1
Nem sempre é um arquivo aleatório. Se você especificou um uid com o sinalizador --uid ao iniciar, ele criará um arquivo de log usando o uid especificado.
ddelrio1986
12

tente o comando

> forever logs

ou

> sudo forever logs

você obterá a localização do arquivo de log

Moh .S
fonte
5

Isso funcionou para mim:

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

Precisa fazer o normal forever start script.js para iniciar e verificar o console / logs de erro usar forever logs isso irá imprimir uma lista de todos os logs sendo armazenados por para sempre e então você pode usar tail -f /path/to/logs/file.loge isso irá imprimir os logs ao vivo em sua janela. pressione ctrl + z para parar a impressão dos logs.

BanwariLal Bamalwa
fonte
3

É uma pergunta antiga, mas me deparei com os mesmos problemas. Se você quiser ver a saída ao vivo, pode executar

forever logs

Isso mostraria o caminho do arquivo de logs, bem como o número do script. Você pode então usar

forever logs 0 -f

0 deve ser substituído pelo número do script para o qual você deseja ver a saída.


fonte
1

A ajuda é o seu melhor salvador, há uma ação de logs que você pode chamar para verificar os logs de todos os processos em execução.

forever --help

Mostra os comandos

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

Exemplo de saída do comando acima, para três processos em execução. As saídas do console.log são armazenadas nesses logs.

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

Por padrão, coloca para sempre todos os arquivos necessários em /$HOME/.forever. Se você quiser mudar esse local, basta definir a variável de ambiente FOREVER_ROOT quando estiver executando para sempre:

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

Você precisa adicionar os especificadores de destino do log antes que o nome do arquivo seja executado. assim

para sempre -e /path/error.txt -o /path/output.txt start index.js

user450821
fonte
0

Com base na resposta de bryanmac. Estou apenas salvando todos os logs em um arquivo e depois lendo com o rabo. Uma maneira simples, mas eficaz de fazer isso.

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

Niko9911
fonte