quando utilizo o log, ao logar a primeira vez ele cria normalmente o arquivo e adiciona o log, porem quando logo novamente ele comeca a duplicar as minhas informacoes de log, sera que alguem pode me ajudar
Meu Codigo:
package br.fucapi.saa.componentes;
import java.util.GregorianCalendar;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Appender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import br.fucapi.saa.vo.SistemaVO;
import br.fucapi.saa.vo.UsuarioVO;
public class Log {
private static Logger logger;
/**
* tipo: equivale ao tipo de mensagem, se erro, aviso, informacao ...<p>
* dataAtual: pega a data em que pedido para gerar mais uma linha no log<p>
* hora: pega a hora em que pedido para gerar mais uma linha no log<p>
* sistema: deve ser a sigla ou nome do sistema<p>
* tipoRotina: deve ser o tipo de rotina, consulta, inclusao, alteracao, exclusao<p>
* Usuario: deve ser o login do usuario<p>
* Rotina: deve ser a rotina utilizada pelo usuario<p>
* IP: deve ser o IP da maquina do cliente<p>
* mensagem: deve ser a mensagem
*
*/
private String usuario_login;
private String sistema;
private String ip;
private String rotina;
private String tipo_rotina;
private String mensagem;
private String url;
private Class classe;
private UsuarioVO usuario;
private SistemaVO sistemaVO;
public static final String EXCLUIR = "E";
public static final String INCLUIR = "I";
public static final String CONSULTAR = "C";
public static final String ALTERAR = "A";
private static Appender fileAppender;
public Log (Class classe, HttpServletRequest request){
try {
this.classe = classe;
usuario = (UsuarioVO)request.getSession().getAttribute("usuario");
if (usuario == null){
usuario_login = "null";
}
else{
usuario_login = usuario.getUsu_login();
}
sistemaVO = (SistemaVO)request.getSession().getAttribute("sistema");
if (sistemaVO == null){
sistema = "null";
}
else{
sistema = sistemaVO.getSistema_cd();
}
ip = request.getRemoteAddr();
url = request.getRequestURI();
logger = Logger.getLogger(classe.getName());
PatternLayout a = new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN);
fileAppender = new FileAppender(
a,"/usr/local/java/jboss/server/default/log/pss"+getDataLog()+".log");
logger.removeAllAppenders();
logger.addAppender(fileAppender);
logger.setLevel(Level.INFO);
}
catch (Exception e){
e.printStackTrace();
}
}
/**
* tipoRotina: deve ser o tipo de rotina, consulta, inclusao, alteracao, exclusao (Existe como variavel estatica na classe log)<p>
* Rotina: deve ser o metodo utilizado pelo usuario<p>
* mensagem: deve ser a mensagem
*/
public void error(String tipoRotina, String rotina, String msg){
try {
iniciarLog(tipoRotina, rotina, msg);
logger.info(toString("ERROR"));
}
catch (Exception e){
e.printStackTrace();
}
}
/**
* tipoRotina: deve ser o tipo de rotina, consulta, inclusao, alteracao, exclusao (Existe como variavel estatica na classe log)<p>
* Rotina: deve ser o metodo utilizado pelo usuario<p>
* mensagem: deve ser a mensagem
*/
public void warn(String tipoRotina, String rotina, String msg){
try {
iniciarLog(tipoRotina, rotina, msg);
logger.info(toString("WARN"));
}
catch (Exception e){
e.printStackTrace();
}
}
/**
* tipoRotina: deve ser o tipo de rotina, consulta, inclusao, alteracao, exclusao (Existe como variavel estatica na classe log)<p>
* Rotina: deve ser o metodo utilizado pelo usuario<p>
* mensagem: deve ser a mensagem
*/
public void info(String tipoRotina, String rotina, String msg){
try {
iniciarLog(tipoRotina, rotina, msg);
logger.info(toString("INFO"));
// logger.shutdown();
}
catch (Exception e){
e.printStackTrace();
}
}
private String toString(String tipo){
String c = classe.getName();
c = c.substring(c.lastIndexOf(".")+1) + ".";
return tipo + "#" + getDataAtual() + "#" + getHoraAtual() + "#"
+ sistema + "#" + tipo_rotina + "#" + usuario_login + "#" + (c+rotina) + "#" + ip +"#" + url +"#"+mensagem;
}
private String getDataAtual() {
GregorianCalendar d = new GregorianCalendar();
int dd = d.get(GregorianCalendar.DATE);
int mm = d.get(GregorianCalendar.MONTH) + 1;
int aa = d.get(GregorianCalendar.YEAR);
String dataAtual = (aa+"/") + (((mm < 10) ? "0" + mm : ""+mm) + "/") + ((dd < 10) ? "0" + dd : dd + "");
return dataAtual;
}
private String getDataLog() {
GregorianCalendar d = new GregorianCalendar();
int dd = d.get(GregorianCalendar.DATE);
int mm = d.get(GregorianCalendar.MONTH) + 1;
int aa = d.get(GregorianCalendar.YEAR);
String dataAtual = aa + ((mm < 10) ? "0" + mm : "" + mm );
return dataAtual;
}
private String getHoraAtual() {
GregorianCalendar hr = new GregorianCalendar();
int hh = hr.get(GregorianCalendar.HOUR_OF_DAY);
int min = hr.get(GregorianCalendar.MINUTE);
int seg = hr.get(GregorianCalendar.SECOND);
String horaAtual = ((hh < 10) ? "0" + hh + ":" : hh + ":");
horaAtual += ((min < 10) ? "0" + min + ":" : min + ":");
horaAtual += ((seg < 10) ? "0" + seg : seg + "");
return horaAtual;
}
private void iniciarLog(String tipoRotina, String rotina, String msg){
this.tipo_rotina = tipoRotina;
this.rotina = rotina;
this.mensagem = msg;
}
public void setSistema(String sistema) {
this.sistema = sistema;
}
public void setUsuario_login(String usuario_login) {
this.usuario_login = usuario_login;
}
}
[color=“green”][size=“9”]*Editado para adicionar o BBCode ;)[/size][/color]