Olá!
Quando criamos um programa em java e queremos mostrar alguma mensagem no console usamos inconscientemente o System.out.println(), mas e para gravar essas mesmas mensagens em um arquivo texto? Muito simples, basta dar um System.setOut() passando o PrintStream desejado. No exemplo abaixo alteramos a saída padrão, que era no console, para um arquivo texto.
[sourcecode lang=”java”]
String path = “D:\\saida.txt”;
FileOutputStream fileOutputStream = null;
try {
fileOutputStream = new FileOutputStream(path);
System.setOut(new PrintStream(fileOutputStream, true));
System.out.println(“Teste”);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
[/sourcecode]
Até mais
Roberto
Parabéns. Era justamente o que estava procurando.
Como eu faço para redirecionar para um arquivo texto e ao mesmo tempo permanecer dando os print’s no terminal?
Obrigado
Igor,
Eu recomendo você dar uma olhada no log4j, ele controla melhor e te dá mais opções para trabalhar com as mensagens de log.
Obrigado.
uma dúvida: como eu faria para intercalar na execução enviar para o arquivo de log e voltar a mostrar no terminal?
É só guardar uma referência para o System.out e ficar alternando entre ele e o PrintStream do arquivo.
Exemplo:
O zero e o 2 aparecem no console e o 1 vai pro arquivo.
System.out.println(“0”);
PrintStream out = System.out;
try {
System.setOut(new PrintStream(new File(“d:\\logs.txt”)));
System.out.println(“1”);
System.setOut(out);
System.out.println(“2”);
} catch (FileNotFoundException e) {
e.printStackTrace();
}