Tenho uma servlet que chama um outro objeto e neste objeto ele faz um log com Log4j, sendo que a cada requisição feita no log ele grava mais de uma vez.
Por exemplo fiz uma chamada a servlet, logo depois de reiniciar o tomcat, e foi gravado no log 1x só.
Na segunda a chamada a mesma servlet, foi gravado no log 2 vezes a mesma linha.
na parte que gera o arquivo de log.txt veja la onde cria o arquivo… e coloque True, assim ele nao subscreve o arquivo e os dados também.
FileWriter fw = new FileWriter(file, true();
esse codigo abaixo é um arquivo de log bem simples
<html>
<body>
<%@ page import ="java.io.*, java.util.*, java.text.*"%>
<%! //declarando a variavel como static
int cont=0;
%>
<%! boolean isFilee()
{//inicio do metodo
/* esse metodo cria o arquivo e grava o log de quantas vezes
pagina foi acessada e quando foi acessada - versao 1.0*/
//o LOG é gravado em portugues
//local que onde o arquivo vai ser gravado
File f = new File("webapps/cap7/log.txt");
++cont;
Date d = new Date();
//classe que definir o idioma do dia/mes/ano
Locale pt = new Locale("pt", "BR");
//escolho o estilo de formatacao da data
DateFormat df = DateFormat.getDateInstance(1,pt);
try{
//digo para nao subscrever se o arquivo ja existir - true
FileWriter fw = new FileWriter(f,true);
PrintWriter pw = new PrintWriter(fw);
pw.println("Nr. Acesso " + cont +
" Data de acesso " + df.format(d));
pw.flush();
pw.close();
}catch(Exception e){
e.printStackTrace();
}
boolean boo = f.isFile();
return boo;
}//fim do metodo
%>
<%= isFilee() %> <!- sem virgula - expressao ->
</body>
</html>
<!- by Camilo Lopes ->
Desculpa, esqueci de falar que uso o Log4J para criar os logs.
O que acho estranho é que uso em outras partes do aplicativo o Log4J e funciona legal, só quando eu chamo pela servlet que eu tenho este problema.