Estou executando um programa Java a partir de um OS X 10.8
terminal bash e tentando redirecionar a saída que ele está produzindo.
No entanto, ao executar isso através de um pipe ou redirecioná-lo para um arquivo, a saída fica em branco, mas vejo a saída no terminal.
Para ilustrar isso:
> java program.java
13/10/02 14:18:30 WARN some
13/10/02 14:18:30 INFO log
13/10/02 14:18:30 INFO messages
...
> java program.java > log
> cat log
>
O programa Java pode ser configurado para gravar em outro fluxo que não seja stdout
, mas um fluxo que ainda produz saída no terminal. É possível uma coisa dessas?
Responder1
Hátrêsarquivos padrão abertos para cada programa, stdin
(entrada padrão), stdout
(saída padrão) e stderr
(erro padrão). Grava em ambos stdout
e stderr
é gerado no terminal por padrão.
É uma convenção comum gravar erros e mensagens de log em stderr
vez de, stdout
para não misturar mensagens de log ou de erro com a saída real do programa. Você pode redirecionar stderr
usando 2>
, por exemplo:
command 2> log