La tubería no detecta la salida estándar

La tubería no detecta la salida estándar

Estoy ejecutando un programa Java desde una OS X 10.8terminal bash y estoy intentando redirigir el resultado que está produciendo.

Sin embargo, cuando se ejecuta esto a través de una tubería o se redirige a un archivo, el resultado está en blanco, sin embargo, veo el resultado en la terminal.

Para ilustrar esto:

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

¿Se puede configurar el programa Java para que escriba en otra secuencia que no sea stdout, pero una secuencia que aún produzca resultados en la terminal? ¿Es posible tal cosa?

Respuesta1

Haytresarchivos estándar abiertos para cada programa, stdin(entrada estándar), stdout(salida estándar) y stderr(error estándar). Escribe en ambos stdouty stderrse genera en la terminal de forma predeterminada.

Es una convención común escribir errores y registrar mensajes stderren lugar de stdoutpara no mezclar mensajes de registro o de error con la salida real del programa. Puedes redirigir stderrusando 2>, por ejemplo:

command 2> log

información relacionada