Tengo un problema extraño y sería bueno si pudiera resolverlo. Para fines de depuración (y algunas otras cosas, también) estoy escribiendo un registro de una aplicación Java de consola en el resultado estándar. Algunas cosas que se escriben en estándar, y algunas cosas como errores se imprimen en error estándar. El problema es que estos dos no están perfectamente sincronizados, por lo que el orden de las líneas impresas no siempre es correcto. Supongo que esto se debe a que se imprimen muchas cosas y sucede que un buffer para una salida está lleno, por lo que la otra salida se imprime antes de que la primera la vacíe.Java: sincronización de salida estándar y error estándar
Por ejemplo, yo quiero escribir esto:
syso: aaa
syso: bbb
syso: ccc
syso: ddd
syso: eee
syserr: ---
Lo que a veces se imprime es
aaa
bbb
ccc
---
ddd
eee
A veces no hay una nueva línea en el medio, por lo que parece
aaa
bbb
ccc---
ddd
eee
Cada vez que imprimo algo en una salida, limpio la misma salida con
System.out.flush();
o
System.err.flush();
¿Cómo resolver este problema? Por cierto, todo está impreso en la consola Eclipse.
¿Ha considerado utilizar un marco de registro dedicado como Log4J en su lugar? –
@ Péter seguro, esa sería una opción, pero preferiría que hubiera una solución simple a este problema (para referencia futura, si nada más). – Ivan