Olá Pessoal !!!
Tenho um código que funciona corretamente numa aplicação desktop. Porém não funciona na minha aplicação web no glassfish. Coloquei o método configuraAndEnvia(); no início de ListnerErros(); só para testar e mandar um e-mail ao construir e envio corretamente para minha conta. O que parece é que a thread não fica ativa capturando os erros durante a minha aplicação. Chamo ListnerErros(); pela primeria vez num MB.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package util;
import java.sql.Date;
import java.util.Calendar;
import org.apache.log4j.Logger;
/**
*
* @author edudebom
*/
public class LogListner {
private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(LogListner.class);
private static String barra = System.getProperty("file.separator");
public static Logger getLogger() {
return logger;
}
public LogListner() {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
ListnerErros();
}
});
}
private static void configuraAndEnvia() {
Calendar cal = Calendar.getInstance();
//informaões do arquivo
String mensagem = "Usuário logado : " + UsuarioLogado.getLogado() + "\n"
+ "Estabelecimento : " + ConfiguracaoGlobal.getConfiguracaoGlobal().getEstabelecimento().getNome_razao() + "\n"
+ "Data de Geração do Arquivo : " + dataUtil.DateToDMYHMS(new Date(cal.getTime().getTime()), "dd/MM/yyyy - hh:mm");
//envia email com o arquivo de logs
EnviaEmail ee = new EnviaEmail();
ee.enviaLog(System.getProperty("user.dir") + barra + "logs" + barra + "server.log", mensagem);
}
public static void ListnerErros() {
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable ex) {
logger.error("", ex);
if (ConfiguracaoGlobal.getConfiguracaoGlobal().getEnviaLog()) {
configuraAndEnvia();
}
}
});
}
}