Jogar inicio de execução e fim em um aruqivo log?

12 respostas
D

Bem, eu tenho um while neste while ele faz algumas operações em um arquivo e depois gravo as modificações em um txt.
Como eu poderia criar um tempo.log, jogando o tempo de início da execução do while e o fim da sua execução.

Eu fiz assim:

FileWriter escrevelog = new FileWriter(tempo.log);

PrintWriter logsaida = new PrintWriter(escrevelog);

logsaida.println(Tempo de execução);

logsaida.println(Inicio +hora+:+minuto+":"+segundo);

while(rs.next())

{



}

logsaida.println(Fim +hora+:+minuto+":"+segundo);

fiz assim, ele criou e jogou a hora de entrada dentro do log, mas não estou sabendo fazer com que ele não apague os dados que já foram gravados antes do while, com isso quando ele saia do while ele apaga tudo e escreve de novo, então fico só com a hora de saída.

Tem como resolver isso?

Um abraço.

12 Respostas

Rafael_Steil

Olha, se o codigo eh assim como voce mostrou, nao poderia sobrescrever os dados apos sair do loop. Agora, voce manipula esse arquivo DENTRO do loop? tipo, por acaso nao esta recriando ele, ou coisa assim, no loop?

Uma coisa eh certa: o arquivo eh zerado a cada nova execucao do programa…

Rafael Steil

D

Não, eu não manipulo este arquivo dentro do loop, ele está assim mesmo, ele só grava a data final, depois que sai do loop apagando a data inicial, não sei como resolver isso??

Paulo_Silveira

Passe um segundo argumento no construtor do FileWriter, indicando que voce nao quer que apague o conteudo anterior (append):

FileWriter escrevelog = new FileWriter("tempo.log", true);
Rafael_Steil

Mas isso nao impede apenas de sobrescrever o conteudo ao rodar novamente o programa? pelo que entendi, ele grava o conteudo antes de entrar no loop, executa o loop, e ao gravar uma outra linha ( apos o loop ), o conteudo anterior eh sobrescrito. Pelo menos foi o que entendi…

Rafael

D

Rafa, era isso que eu estava achando que estava acontecendo, mas eu reparei uma coisa, quando eu rodei o programa, observei a hora eram 16:00:30, então era para ele gravar no inicio 16:00:30 e no fim 16:20:00, só que o que ele fez, gravou 16:00:30 para o inicio e para o fim, então concluo, que ao eu executar o programa ele grava os dois de uma vez tanto antes do while como depois, ele não está respeitando o while, parece que ele passa direto.Pensei que poderia ser as variáveis hora, minuto e segundo, então criei hora1, minuto1 e segundo1 e coloquei depois do while mas não adiantou.

Não sei mas oque fazer??

Rafael_Steil

Hm… por acaso, ao sair do loop, voce pega novamente o horario? Faca assim, ao inves se separar em hora, minuto e segundo, grave o retorno de

System.currentTimeMillis();

Isso te retorna os milisegundos que o programa ja sendo executado no momento da chamada
Teste e veja se os valores se alteram no arquivo.

Rafael

D

Rafa, assim a princípio funcionou, porque ele fez isso

Tempo de execução
Inicio 16:56:38
Fim 1032466221615

só que o fim ficou ruim, teria como melhorar isso.

deveria ter ficado assim

Tempo de execução
Inicio 16:56:38
Fim 17:14:00

Não entendi porque não funcionou do outro jeito
try{

FileWriter escrevelog = new FileWriter(“tempo_normalizacao_us01.log”);
PrintWriter logsaida = new PrintWriter(escrevelog);

logsaida.println(“Tempo de execução”);
logsaida.println(“Inicio “+hora+”:”+minuto+":"+segundo);

while(rs.next())

{

…

}

logsaida.println(Fim	+hora+”:”+minuto+":"+segundo);

logsaida.println("Fim	"+System.currentTimeMillis());

logsaida.close();

escrevelog.close();

}
Rafael_Steil

hhmm, nao exatamente da maneira que voce fez. Assim: as variaveis “hora”, “minuto” e “segundo”, como vc as pega? pelo que estou vendo no seu codigo, esta gravando a mesma coisa pq, ANTES de entrar no loop, vocc grava elas, e APOS o loop, voce grava de novo. Antes de gravar apos o loop, voce precisa pegar novamente a hora, o minuto e os segundos.

Rafael

D

isso mesmo, será que não vai dar para fazer isso??? depois do loop ele tem que pegar a hora,minuto e segundo novamente.

Rafael_Steil

Eh so vc repetir o codigo pra pegar a data… por exemplo, digamos que para pegar a data de inicio vc faca

Date inicio = new Date();

entao, apos o loop, para pegar o horario final, eh so fazer

Date fim = new Date();

isso eh so um exemplo, uma ideia do que eh pra fazer.

Rafael

D

Beleza, essa é a idéia, mas eu poderia pegar somete a hora utilizando este método ai, por exemplo.

Se é isso,
Date inicio = new Date();

suponho que eu poderia fazer isso

não sei se vai dar certo??

int hora = inicio.getHours();

int minuto - inicio.getMinutes();

int segundo = inicio.getSegundo();

e pro fim faria a mesma coisa!!

isso não daria certo??

D

Rafa,
conssegui, apenas mandei ele chamar o GregorianCalendar novamente depois do loop.

Assim

FileWriter escrevelog = new FileWriter(“tempo_normalizacao_us01.log”);
PrintWriter logsaida = new PrintWriter(escrevelog);

GregorianCalendar calendar = new GregorianCalendar();

int hora = calendar.get(calendar.HOUR_OF_DAY);

int minuto = calendar.get(calendar.MINUTE);

int segundo = calendar.get(calendar.SECOND);

logsaida.println(“Tempo de execução”);
logsaida.println(“Inicio “+hora+”:”+minuto+":"+segundo);

while(rs.next())

{



}

GregorianCalendar gc = new GregorianCalendar();

hora = gc.get(calendar.HOUR_OF_DAY);

minuto = gc.get(calendar.MINUTE);

segundo = gc.get(calendar.SECOND);

logsaida.println(Fim	+hora+:+minuto+":"+segundo);
logsaida.close();

escrevelog.close();

}

Assim funcionou, acho que não terá problema né??

Um abraço, obrigado pela ajuda!!
Darta.

Criado 19 de setembro de 2002
Ultima resposta 19 de set. de 2002
Respostas 12
Participantes 3