Visualizar saída do console de um trabalho do Upstart sem arquivos de log

2

Eu escrevi um servidor Java personalizado. Estou executando-o usando Upstart ( /etc/init/myservice.config ) onde eu inicio java -jar myservice.jar .

O processo java usa System.out.println para gravar mensagens de log de todos os tipos.

Eu quero ser capaz de se conectar a ele de uma sessão ssh remota e ver a saída.

UPDATE: eu quero fazer isso sem o incômodo de criar, girar e gerenciar arquivos de log.

Eu olhei para um número de posts, incluindo: Como visualizar o saída de um processo em execução em outra sessão bash?

Eu tentei cat e tail -f /proc/<procid>/fd/0 /proc/<procid>/fd/1 /proc/<procid>/fd/2 - todos são saída em branco.

Tudo isso é como root

Eu sei que há mais coisas para tentar, mas eu sou suspeito, já que os fd's estão em branco (ou pelo menos para mim).

Estou executando o Ubunutu Server 14.04 LTS, o Oracle Java 8

Atualização: Olhando para tentar tela, mas vejo que não é exatamente significado para isso ... Como faço para iniciar uma sessão de tela usando um trabalho iniciante com um usuário não privilegiado?

    
por Nick 18.08.2016 / 21:55

2 respostas

0

A maneira mais fácil de pensar é redirecionar a saída para um arquivo como este:

java -jar myservice.jar >> /var/tmp/myservice

Se houver muita saída, o log pode crescer muito, então você pode querer apará-lo com uma tarefa cron a cada poucas horas ou girar logs.

Verifique se é System.out.println que imprime a saída, não System.err.println . Se for err , você precisará redirecionar o fluxo de erros.

java -jar myservice.jar 2>> /var/tmp/myservice
    
por 19.08.2016 / 00:18
-1
java -jar myservice.jar > mylogfile.txt 2>&1

O 2>&1 significa que você também registra os erros do seu programa em mylogfile.txt

    
por 19.08.2016 / 02:21