Puede utilizar el redirector de flujo de salida que se apoya en la línea de comandos de Windows, conchas * nix, por ejemplo,
java -jar myjar.jar > output.txt
alternativa, tal como se está ejecutando la aplicación desde el interior de la máquina virtual, puede redirigir System.out
desde dentro de java en sí. Usted puede utilizar el método
System.setOut(PrintStream ps)
que sustituye a la secuencia de salida estándar, por lo que todas las llamadas posteriores a System.out van a la corriente que se especifique. Puede hacer esto antes de ejecutar su aplicación envuelta, p. llamando System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("output.txt"))));
Si está utilizando un envoltorio que no se puede modificar, a continuación, crear su propio envoltorio. Así que tienes el contenedor FEST -> contenedor de redirector de flujo -> aplicación probada.
Por ejemplo, se puede implementar un contenedor simple como esto:
public class OutputRedirector
{
/* args[0] - class to launch, args[1]/args[2] file to direct System.out/System.err to */
public static void main(String[] args) throws Exception
{ // error checking omitted for brevity
System.setOut(outputFile(args(1));
System.setErr(outputFile(args(2));
Class app = Class.forName(args[0]);
Method main = app.getDeclaredMethod("main", new Class[] { (new String[1]).getClass()});
String[] appArgs = new String[args.length-3];
System.arraycopy(args, 3, appArgs, 0, appArgs.length);
main.invoke(null, appArgs);
}
protected PrintStream outputFile(String name) {
return new PrintStream(new BufferedOutputStream(new FileOutputStream(name)), true);
}
}
se invoca con 3 params adicionales - la clase principal para ejecutar, y dirige la salida/error.
que es más probable va a ser una solución externa con respecto a la máquina virtual de Java, como descriptores de archivo de redirección en bash/sh (por ejemplo, "app.exe> file.log 2> & 1"), a menos que use alguna biblioteca de registro configurable – bobah