Ler log da aplicacao

5 respostas
J

Bom dia galera,

To com um probleminha aqui e nao sei nem como pesquisar.

a questao é a seguinte.

em todo meu sistema eu vou dando System.out.println(TEXTO) conforme as operacoes vao sendo executadas.

no meu Jframe principal eu tenho um textarea que eu quero alimentar com esses prints. Sacaram?

como eu faço essa leitura?
quanto a atualizacao automática eu tava pensando em uma nova thread, é isso mesmo?

abrç a todos!

5 Respostas

rodrigoalmeida

Por que não gera esse log de operações para um arquivo texto? Depois é só lê do mesmo arquivo.

J

porque caso a aplicacao gere algum erro ja aparece no textarea tb

alem de eu ter ficado curioso de como faz isso :smiley:

rodrigoalmeida

Haaa… :D. Isso não sei como faz :oops:

J

ninguem ai sabe como fazer isso pessoal???

lina

Oi,

Fiz um programa exatamente agora, que escreve a saida do System.out no JTextArea. Como não tenho tempo, não vou colocar os comentários agora, se tiver dúvidas é só falar.

import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Date;

import javax.swing.JFrame;
import javax.swing.JTextArea;

public class TesteOutPutTrace
{
	/**
	Trace default da aplicação.
	*/
	public static		PrintStream
	DefaultTrace		=	System.out;
	
	/**
	Construtor da classe.
	*/
	public TesteOutPutTrace()
	{
		WindowOutPut lo_area = new WindowOutPut();
		lo_area.setVisible(true);
		DefaultTrace = new PrintStream(lo_area.TRACE, true);
		System.setOut(DefaultTrace);
		System.out.println("a");
		System.out.println("b");
		System.out.println("c");
	}
	
	private class WindowOutPut extends JFrame
	{
		public OutputStream TRACE = new TraceConsoleOutputStream();
		
		public JTextArea text;
		
		public WindowOutPut()
		{
			setSize(500, 500);
			text = new JTextArea();
			getContentPane().add(text);
		}
		
		private class TraceConsoleOutputStream extends OutputStream
		{
			public void write(int b) {
				
				text.append(""+b);
			}
	
			public void write(byte[] b) {
				
				text.append(new String(b));
			}
			
			public void write(byte[] b, int a, int c) {
				
				text.append((c > 2 ? new Date() +" - " : "") + new String(b,a,c));
			}
		}
	}

	/**
	@param args
	*/
	public static void main(String[] args)
	{
		new TesteOutPutTrace();
	}

}

OBS: Você pode ter isso em classes separadas, coloquei tudo como inner.

Tchauzin!

Criado 4 de maio de 2011
Ultima resposta 4 de mai. de 2011
Respostas 5
Participantes 3