Redirecionando erros de programa para o arquivo de log e erro

2

Eu tenho um programa independente Java programado para ser executado como cron a cada 10 minutos

Eu quero pegar / escrever erros lançados por este programa Java ambos no arquivo de log e também como um arquivo de erro separado (MyJavaStandalone.err).

Eu conheço os seguintes comandos:
Erros redirecionados para um arquivo separado, mas não para o arquivo de log

/usr/java/jdk1.6.0/bin/java MyJavaStandalone >> MyJavaStandalone.log 2>> MyJavaStandalone.err &

O log e os erros são redirecionados para o mesmo arquivo de log, mas os erros sozinhos não são gravados em um arquivo de erro separado

/usr/java/jdk1.6.0/bin/java MyJavaStandalone >> MyJavaStandalone.log 2>&1 &
    
por Gnanam 01.04.2010 / 11:01

2 respostas

1

Experimente:

/usr/java/jdk1.6.0/bin/java MyJavaStandalone 2>&1 >> MyJavaStandalone.log | tee -a MyJavaStandalone.err >> MyJavaStandalone.log &
    
por 01.04.2010 / 11:30
0

Você pode conseguir o que você quer assim:

/usr/java/jdk1.6.0/bin/java MyJavaStandalone 3>&1 2>&1 1>MyJavaStandalone.log| tee -a MyJavaStandalone.log > MyJavaStandalone.err

O que faz:

  • Crie um novo descritor de arquivo 3, que será enviado para STDOUT ( 3>&1 )
  • Redirecionar STDERR para STDOUT ( 2>&1 )
  • Saída STDOUT para logfile ( 1>MyJavaStandalone.log )
  • tee pega o STDOUT do comando anterior, que na verdade é STDERR do aplicativo Java, acrescenta a saída ao arquivo de log (portanto, o arquivo de log agora possui os dois fluxos) e duplica o fluxo para STDOUT
  • Por último, esse STDOUT é simplesmente redirecionado para seu log de erros
por 01.04.2010 / 11:54