2009-03-16 20 views
8

Me gustaría saber, ¿a dónde va Java stderr de manera estándar?¿A dónde va Java Stderr?

Sé que puedo cambiar el stderr usando System.setErr, que 'Reasigna el "flujo de salida de error estándar', pero no sé cuál es el" estándar ".

Me gustaría especificar mi pregunta más: Tengo la biblioteca C++ que uso en java (jni). El problema es que parece que no puedo ver la salida a stderr, que proviene de mi biblioteca C++. Llamo a assert() en la biblioteca de C++ y no veo el resultado en la consola, cuando ejecuto la API java que usa la biblioteca.

+0

¿Usted intentó System.stderr.writeln ("Estoy aquí")? ¿Qué viste? –

Respuesta

3

De forma predeterminada System.err es la consola, al igual que System.out.

-1

El flujo de salida de error estándar va a la consola. Esta secuencia ya está abierta y lista para aceptar datos de salida.

Consulte el java sun api para obtener más información.

+1

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – Linuxios

+0

Sí, tienes razón, ¡lo cambiaré! – Tobias

14

Va al flujo de error estándar del proceso, sea lo que sea que esté configurado.

  • Si ejecuta la aplicación desde una consola, probablemente también se escribirá en la consola.
  • En una GUI, la salida/error estándar a menudo se descarta, es decir, se pierde la salida.
  • En un servicio (por ejemplo, un servidor web), el error/resultado estándar normalmente se captura en algún archivo de registro girado, pero depende por completo del servicio.

La mayoría de las plataformas le permiten redirigir la secuencia de error estándar en otro lugar (por ejemplo, a un archivo de texto).

La idea de System.setErr es que permitirá a no utilizar el flujo de error estándar del proceso en sí, sino cambiarlo por lo que las llamadas a System.err.println etc ir a la corriente dada.

0

Acabo de escribir un pequeño programa de prueba que hace un System.err.println y parece que saldrá a la consola.

2

Descriptor de archivo 2 de la persona que llama. Donde va desde allí — depende de la persona que llama. En la consola, que se puede redirigir a otro lugar, como por ejemplo:

java Example 2>> errors.log 
Cuestiones relacionadas