Log de erros sem o Log4j

Boa noite pessoal,

eu tenho experiência de trabalho com vb/vba e desejando expandir meus conhecimentos resolvi tentar desenvolver uma aplicação em Java. Eu terminando de criar uma aplicação de ETL utilizando java, porém me deparei com um problema devido a falta de conhecimento de alguns conceitos do Java e por isso peço-lhes ajuda.
A aplicação já está conectando no banco de dados que eu necessito, extraí os dados, faz a detecção de alertas que eu necessito. Até aí está tudo bem. Pórém eu gostaria de ter um log de erros, para saber quando uma conexão em um dos bancos de dados que esta aplicação for conectar (ela conecta em vários bancos de dados) der erro eu possa saber e assim identificar os erros e solucioná-los o mais rápido possível.
Há 4 classes nessa aplicação:

[list]DBAcesso : a classe responsável por fazer todo o trabalho de “entrar em contato” com o banco de dados através da jdbc. Alguns métodos da classe devem retornar um erro caso a execução destes não ocorra com sucesso;
DBErros: classe utilizada para inserir os dados dos erros numa tabela no meu banco de dados;
ETLOlhoVivo: a classe que faz o trabalho de ETL e que caso apareça algum erro ela chame um objeto do tipo DBErros e insira o erro retornado por DBAcesso;
Main: a classe principal onde há a interface gráfica.[/list]

Abaixo segue o código fonte para vocês entenderem e que possam me ajudar.

[code]package etl_olho_vivo;

// TesteConexaoBanco.java
import camada_bd.;
import java.sql.
;
import java.util.*;

public class ETLOlhoVivo
{
private String usuario = new String (); // variável para armazenar o usuário p/ conectar no B.D.
private String usuarioBDExt = new String(); // variável para armazenar o usuário p/ conectar no B.D. externo
private String senha = new String (); // variável para armazenar a senha para conectar no B.D.
private String senhaBDExt = new String(); // variável para armazenar a senha para conectar no B.D. externo
private String hostName = new String (); // variável para armazenar o host name do servidor de B.D.
private String SID = new String (); // variável para armazenar o SID
private String loja = new String (); // variável para armazenar a loja
private String strSql = new String (); // variável para armazenar os sqls a serem executados
private String dataInicial = new String (); // variável para armazenar a data inicial a que os dados extraídos se referem
private String dataFinal = new String (); // variável para armazenar a data final a que os dados extraídos referem
private String datLancamento = new String(); // variável para armazenar a data de lançamento da divergência a ser inserida no B.D.
private String datLancamentoAux = new String (); // variável auxiliar para armazenar a data para tratamento
private String URLBD = new String (); // variável para armazenar o URL do Banco de Dados
private int numPorta; // variável para armazenar o número da porta para conectar no B.D.
private boolean sucessoProcessamento; // flag utilizada que informa se o processamento foi concluído com sucesso
private int numLog; // número utilizado pelo log
DBErros logETL;

    private void setSucessoProcessamento (boolean sucessoProcessamento)
    {
        this.sucessoProcessamento = sucessoProcessamento;
    }//setSucessoProcessamento
    
    private boolean getSucessoProcessamento ()
    {
        return sucessoProcessamento;
    }//getSucessoProcessamento
            
    public void setNumLog(int numLog)
    {
        this.numLog = numLog;
    }//setNumLog
    
    public int getNumLog()
    {
        return this.numLog;
    }//getNumLog
    
    public void setURLBD ( String URLBD )
    {
        this.URLBD = URLBD;
    
    }//URLBD

    public String getURLBD ()
    {
        return this.URLBD;
    }//getURLBD

    public void setUsuario (String usuario)
    {
        this.usuario = usuario;
    }//setUsuario

    public String getUsuario ()
    {
        return this.usuario;
    }//get

    public void setNumPorta(int numPorta)
    {
        this.numPorta = numPorta;
    }//setNumPorta

    public int getNumPorta ()
    {
        return this.numPorta;
    }//getNumPorta

    public void setDataInicial (String dataInicial)
    {
        this.dataInicial = dataInicial;
    }//setDataInicial

    public String getDataInicial ()
    {
        return this.dataInicial;
    }//dataInicial

    public String getDataFinal ()
    {
        return this.dataFinal;
    }//getDataFinal

    public void setDataFinal(String dataFinal)
    {
        this.dataFinal = dataFinal;
    } //setDataFinal

    public void setStrSQL (String strSql)
    {
        this.strSql = strSql;
    }//strSQL

    public String getStrSQL ()
    {
        return this.strSql;
    }//getStrSQL

    public void setLoja (String loja)
    {
        this.loja = loja;
    }//setLoja

    public String getLoja ()
    {
        return this.loja;
    }//getLoja

    public void setSID ( String SID )
    {
        this.SID = SID;
    }//SID

    public String getSID ()
    {
        return this.SID; 
    }//getSID

    public void setSenha (String senha)
    {
        this.senha = senha;
    }//setSenha

    public String getSenha ()
    {
        return this.senha;
    }//getSenha

    public void setHostName ( String hostName )
    {
        this.hostName = hostName;
    }//setHostName

    public String getHostName ()
    {
        return this.hostName;
    }//getHostName

    //método utilizado p/ transformar a data do formato dd/mm/aa
    //p/ 1aammdd. Este formato 1aammdd é o utilizado pelo RMS
    public String acertaDataRMS(String data)
    {
        //07/04/03
        datLancamentoAux = data;
        datLancamento = "1" + datLancamentoAux.substring(6,8);
        datLancamento = datLancamento + datLancamentoAux.substring (3,5);
        datLancamento = datLancamento + datLancamentoAux.substring (0,2);
        System.out.println (datLancamento);
        return datLancamento;
    }//acertaDataRMS
    
    //método utilizado p/ transformar a data do formato 1aammdd
    //p/ dd/mm/aa.
    public void acertaDataOlhoVivo(String data)
    {
        datLancamentoAux = data;
        datLancamento = (datLancamentoAux.substring(5,7) + "/"); 
        datLancamento = datLancamento + (datLancamentoAux.substring(3,5) + "/");
        datLancamento = datLancamento + (datLancamentoAux.substring(1,3));
    }//acertaDataRMS
    
    public ETLOlhoVivo (String usuario, String senha, String URLBD, String diaInicial, String diaFinal)
    {  
        setUsuario(usuario);
        setSenha(senha);
        setURLBD(URLBD);
        setDataInicial(acertaDataRMS(diaInicial));
        setDataFinal (acertaDataRMS(diaFinal));
        logETL = new DBErros(getUsuario(), getSenha(), getURLBD());
    }//ETLOlhoVivo
    
    

    public void extracao()
    {
          
        setLoja("MTZ");
        
        DB_Acesso conexoes = new DB_Acesso ( usuario, URLBD ,senha ) ;
        
        //configurando o objeto pra ser utilizado p/ as conexoes
        numLog = conexoes.setDriverBD ( "oracle.jdbc.driver.OracleDriver" );
        conexoes.setStrSQL ( "select * from tb_conexoes" );
        numLog = conexoes.conexao();

        //camadaBD.executarSQL();
        numLog = conexoes.executarSQL();	

        //loop para conectar em todas os B.D. do RMS p/ extrair os dados
        //para análise
        ResultSet rsConexoes = conexoes.getRsResultado( );

        //#############################################################################################################
        //############################ TRECHO DE CÓDIGO P/ EXTRAÇÃO DOS DADOS DO RMS ##################################
        //#############################################################################################################
        try
        {
                while ( rsConexoes.next ( ) )
                {
                        
                        usuarioBDExt = rsConexoes.getString ( "nom_usuario" );
                        senhaBDExt = rsConexoes.getString ( "sen_senha" );
                        hostName = rsConexoes.getString ( "nom_host" );
                        numPorta = rsConexoes.getInt ( "num_porta" );
                        SID = rsConexoes.getString ( "nom_SID" );
                        loja = rsConexoes.getString ( "nom_abreviatura" );

                        DB_Acesso extracao = new DB_Acesso ( usuarioBDExt, "jdbc:oracle:thin:@"+ hostName + ":" + numPorta + ":" + SID , senhaBDExt ) ;

                        numLog = conexoes.setDriverBD ( "oracle.jdbc.driver.OracleDriver" );

                        //montagem do sql
                        strSql = "meu sql"; //o sql eu suprimi, mas o mesmo estava funcionando corretamente
                        System.out.println (strSql);

                        extracao.setStrSQL ( strSql );
                        numLog = extracao.conexao ( );
                        numLog = extracao.executarSQL();

                        // transferencia para um outro ResultSet p/ se manipular os registro extraídos do RMS
                        ResultSet rsExtracao = extracao.getRsResultado ( );

                        // set do usuário e senha para conectar no B.D. do sist. Olho vivo p/ descarregar a extracao

                        DB_Acesso insercaoBDOlhoVivo = new DB_Acesso ( usuario, URLBD ,senha ) ;

                        //configurando o objeto pra ser utilizado p/ a inserção no B.D.
                        numLog = insercaoBDOlhoVivo.setDriverBD ( "oracle.jdbc.driver.OracleDriver" );
                        numLog = insercaoBDOlhoVivo.conexao ( );
                        
                        //limpeza da tabela temporária tb_ov_divergencia_temp
                        insercaoBDOlhoVivo.setStrSQL("truncate table tb_ov_divergencia_temp");
                        numLog = insercaoBDOlhoVivo.gravarBD();
                        //System.out.println(numLog);
                        //#############################################################################################################
                        //######################### TRECHO DE IMPORTAÇÃO DOS DADOS P/ B.D. DO SISTEMA OLHO VIVO #######################
                        //#############################################################################################################

                        // Armazenar os dados no banco de dados
                        try
                        {
                            //System.out.println(numLog);
                            while ( rsExtracao.next ( ) )
                            {

                                acertaDataOlhoVivo(rsExtracao.getString("eschc_data"));

                                //montagem do sql
                                strSql = "meu sql"; //esteeu suprimi, mas o mesmo está funcionando corretamente
                                
                                insercaoBDOlhoVivo.setStrSQL ( strSql );
                                //insercaoBDOlhoVivo.conexao ( );
                                System.out.println (strSql);
                                numLog = insercaoBDOlhoVivo.gravarBD ( );

                            } //while
                            
                        } //try
                        catch ( Exception e )
                        {
                            logETL.setNumErro(getNumLog());
                            logETL.setSiglaLoja(getLoja());
                            logETL.inserirErro();
                            e.printStackTrace ( );
                        } //catch

                        insercaoBDOlhoVivo.fecharConexao();
                        extracao.fecharConexao();
                        logETL.setNumErro(getNumLog());
                        logETL.setSiglaLoja(getLoja());
                        logETL.inserirErro();
                        this.deteccao();
                } //while
                numLog = conexoes.fecharConexao();

        } //try
        catch ( SQLException sql )
        {
                logETL.setNumErro(getNumLog());
                logETL.setSiglaLoja(getLoja());
                logETL.inserirErro();
                sql.printStackTrace ( );
        } //catch

    }//extracao

    public void deteccao()
    {
        //#############################################################################################################
        //########################### TRECHO DE DETECÇÃO DE DIVERGÊNCIAS FORA DOS PADRÕES #############################
        //#############################################################################################################

        try {

            DB_Acesso deteccao = new DB_Acesso ( usuario, URLBD, senha ) ;

            //configurando o objeto pra ser utilizado p/ a detecção das divergências
            numLog = deteccao.setDriverBD ( "oracle.jdbc.driver.OracleDriver" );

            strSql = "meu sql"; //o sql eu suprimi, mas está funcionando corretamente
            
            deteccao.setStrSQL( strSql );
            //System.out.println ( strSql );
            numLog = deteccao.conexao();
            numLog = deteccao.gravarBD ( );
            
            //limpeza da tabela temporária de extracao
            deteccao.setStrSQL ( "truncate table tb_ov_divergencia_temp" );
            numLog = deteccao.gravarBD();
            
            numLog = deteccao.fecharConexao ( );
        } // try
        catch ( Exception sql )
        {   
            logETL.setNumErro(getNumLog());
            logETL.setSiglaLoja(getLoja());
            logETL.inserirErro();
            sql.printStackTrace ( );
        } // catch*/

        logETL.setNumErro(getNumLog());
        logETL.setSiglaLoja(getLoja());
        logETL.inserirErro();
        System.out.println( "Executou com sucesso" );

    } //deteccao

} //TesteDB_Acesso[/code]

[code]package camada_bd;
import java.sql.*;

public class DB_Acesso {

private String usuario;             //variável utilizada para armazenar o usuário do B.D.
    private String dbURL;               //variável utilizada para armazenar o caminho do servidor
private Statement stmt;             //variável utilizada para armazenar o objeto do tipo Statement 
    private String senha;               //variável utilizada para armazenar a senha do usuário do B.D.
private ResultSet rsResultado;      //variável utilizada para armazenar o resultado da consulta no B.D.
private Connection conexao;         //variável utilizada para armazenar o string de conexão com o B.D.
private String driverBD;            //variável utilizada para armazenar o string do driver do B.D. 
    private String strSQL;              //variavel utilizada para armazenar o string do SQL;
    private String resultado;           //variável auxiliar
    
    public DB_Acesso ( String usuario, String dbURL, String senha )
    {
        //inicializando as variáveis com os dados para conectar no banco
        setUsuario ( usuario );
        setDbURL ( dbURL );
        setSenha ( senha );
    } // DB_Acesso
    
    public void setStrSQL ( String strSQL )
    {
        this.strSQL = strSQL;
    } //setStrSQL
    
    public String getStrSQL ()
    {
        return strSQL;
    } //getStrSQL
    
    public void setUsuario ( String usuario )
    {
        this.usuario = usuario;
    } //setUsuario

    public String getUsuario( )
    {
        return usuario;
    } //getUsuario
    
    public void setDbURL ( String dbURL )
    {
        this.dbURL = dbURL;
    } //setdbURL
    
    public String getDbURL ( )
    {
        return dbURL;
    } //getdbURL
    
    public void setSenha ( String senha )
    {
        this.senha = senha;
    } //setSenha
    
    public String getSenha ( )
    {
        return senha;
    } //getSenha
    
    public int setDriverBD ( String driverBD )
    {
            try
            {   
                Class.forName ( driverBD );
                return 0;
	} // try
	catch ( Exception e)
	{
                return 1;
                //e.printStackTrace ( );
	} // catch
    } // setDriverBD
    
    public String getDriverBD ( )
    {
        return driverBD;
    } // setDriverBD
            
public int conexao() 
    {
            try
            {
                conexao = DriverManager.getConnection ( dbURL, usuario, senha );
                stmt = conexao.createStatement();
                return 0;
            } //try
            catch ( SQLException sql )
	{
                return 2;

// System.out.println(“Ferrou a conexão”);
// sql.printStackTrace ( );
} // catch
}

public int executarSQL() {
        try
        {
            rsResultado = stmt.executeQuery ( strSQL );
            return 0;
        } //try
        catch ( SQLException sql )
        {
            return 3;
	//sql.printStackTrace ( );
        } // catch
    } //executarSQL
    
    public void setResultado ( String resultado )
    {
        this.resultado = resultado;
    } //setResultado
    
    public String getResultado ( )
    {
        return resultado;
    } //getResultado

    public ResultSet getRsResultado ()
    {
        return rsResultado;
    } //getResultado
    
    public int fecharConexao ()
    {
        try
        {
            stmt.close();
            conexao.close();
            return 0;
        } //try
        catch ( SQLException sql)
        {
            return 4;
            //sql.printStackTrace();
        } //catch
    } //fecharConexao
    
public int gravarBD() {
        try
        {
            int linhas = stmt.executeUpdate ( strSQL );
            return 0;
        } //try
        catch ( SQLException sql )
        {
            sql.printStackTrace ( );
            return 5;
	
        } // catch
}

}
[/code]

[code]package camada_bd;
import java.util.;
import java.text.
;
//import javax.sql.;
//import java.sql.
;

/**
*

  • @author mkm jk
    */
    public class DBErros {

    private int numErro; //variável utilizada para armazena o número do erro
    private String siglaLoja; //variável utilizada para armazenar a sigla da loja
    private Date data = new Date(); //variável utilizada para armazenar a data do erro
    private String usuario; //variável para armazenar o usuário p/ conectar no B.D.
    private String senha; //variável para armazenar a senha para conectar no B.D.
    private String URLBD = new String (); //variável para armazenar o URL do Banco de Dados
    private String sql; //variável para armazenar o comando SQL a ser executado no B.D.

    public void setSql(String sql)
    {
    this.sql = sql;
    }//setSql

    public String getSql()
    {
    return this.sql;
    }//getSql

    public void setUsuario(String usuario)
    {
    this.usuario = usuario;
    }//setUsuario

    public String getUsuario()
    {
    return this.usuario;
    }//getUsuario

    public void setSenha(String senha)
    {
    this.senha = senha;
    }//setSenha

    public String getSenha()
    {
    return this.senha;
    }//getSenha

    public void setURLBD(String URLBD)
    {
    this.URLBD = URLBD;
    }//setURLBD

    public String getURLBD()
    {
    return this.URLBD;
    }//getURLBD

    public void setNumErro(int numErro)
    {
    this.numErro = numErro;
    }//setNumErro

    public int getNumErro()
    {
    return this.numErro;
    }//getNumErro

    public void setSiglaLoja(String siglaLoja)
    {
    this.siglaLoja = siglaLoja;
    }//setSiglaLoja

    public String getSiglaLoja()
    {
    return this.siglaLoja;
    }//getSiglaLoja

    public Date getData()
    {
    return this.data;
    }//getData

    /** Creates a new instance of DBErros */
    public DBErros(String usuario, String senha, String URLBD)
    {
    setUsuario(usuario);
    setSenha(senha);
    setURLBD(URLBD);
    }//DBErros

    public void inserirErro()
    {
    int numExec;

     SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yy");
     
     DB_Acesso log = new DB_Acesso(usuario, URLBD, senha);
     
     try
     {
         log.setDriverBD ( "oracle.jdbc.driver.OracleDriver" );
         log.conexao();
    
         System.out.println(formatador.format(data));
         
         setSql("insert into tb_log_erros ");
         setSql(sql + "(nom_abreviatura, dat_data_erro, cod_erro) ");
         setSql(sql + "values ('" + siglaLoja + "', ");
         setSql(sql + "'" + formatador.format(data) + "', ");
         setSql(sql + numErro + ")");
    
         System.out.println(sql);            
         log.setStrSQL(sql);
         log.gravarBD();
    
         log.fecharConexao();
     }//try
     catch(Exception e)
     {
         e.printStackTrace();
     }//catch
    

    }//inserirErro

}//class[/code]

[code]
package etl_olho_vivo;

import javax.xml.stream.events.StartDocument;
/*

  • Main.java
  • Created on 4 de Abril de 2007, 17:13
    */

/**
*

  • @author mkm jk
    */
    public class Main extends javax.swing.JFrame {

    /**

    • Creates new form Main
      */
      public Main() {
      initComponents();
      }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      //
      private void initComponents() {
      extrair = new javax.swing.JButton();
      jLabel1 = new javax.swing.JLabel();
      jLabel2 = new javax.swing.JLabel();
      jLabel3 = new javax.swing.JLabel();
      jLabel4 = new javax.swing.JLabel();
      txtUsuarioBD = new javax.swing.JTextField();
      pswSenhaBD = new javax.swing.JPasswordField();
      txtURLBD = new javax.swing.JTextField();
      txtDiaInicial = new javax.swing.JTextField();
      statusBar = new javax.swing.JPanel();
      lblStatus = new javax.swing.JLabel();
      jLabel5 = new javax.swing.JLabel();
      txtDiaFinal = new javax.swing.JTextField();
      jLabel6 = new javax.swing.JLabel();

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
      setTitle(“Sistema Olho Vivo - ETL”);
      setBackground(new java.awt.Color(204, 204, 255));
      extrair.setText(“Extrair”);
      extrair.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      ButtonHandler(evt);
      }
      });

      jLabel1.setFont(new java.awt.Font(“Arial”, 0, 12));
      jLabel1.setForeground(new java.awt.Color(0, 51, 102));
      jLabel1.setText(“Usu\u00e1rio do Banco de Dados:”);

      jLabel2.setFont(new java.awt.Font(“Arial”, 0, 12));
      jLabel2.setForeground(new java.awt.Color(0, 51, 102));
      jLabel2.setText(“Senha do Banco de Dados:”);

      jLabel3.setFont(new java.awt.Font(“Arial”, 0, 12));
      jLabel3.setForeground(new java.awt.Color(0, 51, 102));
      jLabel3.setText(“URL do Banco de Dados:”);

      jLabel4.setFont(new java.awt.Font(“Arial”, 0, 12));
      jLabel4.setForeground(new java.awt.Color(0, 51, 102));
      jLabel4.setText(“Dia Inicial da Extra\u00e7\u00e3o (dd/mm/aa):”);

      txtURLBD.setText("");

      statusBar.setBackground(new java.awt.Color(255, 255, 255));
      statusBar.setBorder(javax.swing.BorderFactory.createEtchedBorder());
      lblStatus.setFont(new java.awt.Font(“Arial”, 0, 12));
      lblStatus.setForeground(new java.awt.Color(0, 51, 102));
      lblStatus.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

      javax.swing.GroupLayout statusBarLayout = new javax.swing.GroupLayout(statusBar);
      statusBar.setLayout(statusBarLayout);
      statusBarLayout.setHorizontalGroup(
      statusBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(lblStatus, javax.swing.GroupLayout.DEFAULT_SIZE, 541, Short.MAX_VALUE)
      );
      statusBarLayout.setVerticalGroup(
      statusBarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(lblStatus, javax.swing.GroupLayout.DEFAULT_SIZE, 15, Short.MAX_VALUE)
      );

      jLabel5.setFont(new java.awt.Font(“Arial”, 0, 24));
      jLabel5.setForeground(new java.awt.Color(0, 51, 102));
      jLabel5.setText(“Sistema Olho Vivo - ETL”);

      jLabel6.setFont(new java.awt.Font(“Arial”, 0, 12));
      jLabel6.setForeground(new java.awt.Color(0, 51, 102));
      jLabel6.setText(“Dia Final da Extra\u00e7\u00e3o (dd/mm/aa):”);

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      .addContainerGap(424, Short.MAX_VALUE)
      .addComponent(extrair)
      .addGap(54, 54, 54))
      .addGroup(layout.createSequentialGroup()
      .addGap(135, 135, 135)
      .addComponent(jLabel5)
      .addContainerGap(149, Short.MAX_VALUE))
      .addComponent(statusBar, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      .addGap(33, 33, 33)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jLabel1)
      .addComponent(jLabel3)
      .addComponent(jLabel2)
      .addComponent(jLabel6)
      .addComponent(jLabel4))
      .addGap(13, 13, 13)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(txtURLBD, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
      .addComponent(txtDiaFinal, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
      .addComponent(txtDiaInicial, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
      .addComponent(pswSenhaBD, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE)
      .addComponent(txtUsuarioBD, javax.swing.GroupLayout.DEFAULT_SIZE, 281, Short.MAX_VALUE))
      .addGap(27, 27, 27))
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
      .addGap(27, 27, 27)
      .addComponent(jLabel5)
      .addGap(32, 32, 32)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jLabel1)
      .addComponent(txtUsuarioBD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGap(23, 23, 23)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jLabel2)
      .addComponent(pswSenhaBD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGap(25, 25, 25)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jLabel3)
      .addComponent(txtURLBD, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 26, Short.MAX_VALUE)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jLabel4)
      .addComponent(txtDiaInicial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGap(25, 25, 25)
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addComponent(jLabel6)
      .addComponent(txtDiaFinal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGap(17, 17, 17)
      .addComponent(extrair)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
      .addComponent(statusBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      );
      pack();
      }//

    private void ButtonHandler(java.awt.event.ActionEvent evt) {

     System.out.println ("Início do processamento");
     lblStatus.setText("Início do processamento");
     lblStatus.repaint();
     if (evt.getSource() == extrair)
     {
         new Thread()
         {
             public void run()
             {
                 if (validarDados() == false)
                 {
                     lblStatus.setText("Preencha todos os campos para que o processo inicie");
                     lblStatus.repaint();
                 }//if
                 else
                 {
                     try
                     {
                         ETLOlhoVivo ETL = new ETLOlhoVivo(txtUsuarioBD.getText(), pswSenhaBD.getText(), txtURLBD.getText(), txtDiaInicial.getText(), txtDiaFinal.getText());
                         ETL.extracao();
                         //ETL.deteccao();
                         java.awt.EventQueue.invokeLater(new Runnable(){
                             public void run(){
                                 lblStatus.setText("Detecção concluída com sucesso");
                                 lblStatus.repaint();
                             }
                         });//invokeLater
    
                     }//try
                     catch (Exception e)
                     {
                         java.awt.EventQueue.invokeLater(new Runnable () {
                             public void run(){
                                 lblStatus.setText("Extração concluída com problemas");
                                 lblStatus.repaint();
                                 
                             }
                         });
                         //System.out.println(e.getLocalizedMessage());
                         e.printStackTrace();
                     }//catch
    
    
                 }//else   
             }//run
         }.start();//thread
     }//if
    

    }

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new Main().setVisible(true);
      }
      });
      }

    // Variables declaration - do not modify
    private javax.swing.JButton extrair;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel lblStatus;
    private javax.swing.JPasswordField pswSenhaBD;
    private javax.swing.JPanel statusBar;
    private javax.swing.JTextField txtDiaFinal;
    private javax.swing.JTextField txtDiaInicial;
    private javax.swing.JTextField txtURLBD;
    private javax.swing.JTextField txtUsuarioBD;
    // End of variables declaration

    public boolean validarDados()
    {
    //txtUsuarioBD
    String usuarioBD = txtUsuarioBD.getText();
    String senhaBD = pswSenhaBD.getText();
    String URLBD = txtURLBD.getText();
    String diaInicial = txtDiaInicial.getText();
    String diaFinal = txtDiaFinal.getText();

     if(usuarioBD.length() == 0)
     {
         return false;
     }//if
     
     //pswSenhaBD
     if(senhaBD.length() == 0)
     {
         return false;
     }//if
     
     //txtURLBD
     if(URLBD.length() == 0)
     {
         return false;
     }//if
     
     //txtDiaInicial
     if(diaInicial.length() == 0)
     {
         return false;
     }//if
     
     //txtDiaFinal
     if(diaFinal.length() == 0)
     {
         return false;
     }//if
     
     return true;
    

    }//validarDados

}//class Main[/code]

Eu não fui atrás do Log4j agora porque eu não tenho muito tempo para terminar esta aplicação, e gostaria de fazer funcionar essa estrutura que eu comecei a montar. Eu vou estudar o Log4J, mas para implementá-la agora acredito que não conseguirei. Mas eu vou estudar o Log4J. Agradeço desde já quem puder me ajudar!!! Valews!!!

Olá

Para fazer log opções não faltam tem o commons-logging, o próprio java tem uma API de Log embutida. Em ultimo caso vc pode criar uma classe que cria um arquivo texto e você a chama de dentro do catch de todas as exceções.

Olá,

[quote=furutani]Olá

Para fazer log opções não faltam tem o commons-logging, o próprio java tem uma API de Log embutida. Em ultimo caso vc pode criar uma classe que cria um arquivo texto e você a chama de dentro do catch de todas as exceções.[/quote]

Em penúltimo caso criaria um xml!
Com xml você pode exportar para um excel (VBA - você deve saber bem isso)… para criar relátorios fica muito mais fácil.

Abraços!

Bom dia,

Muito obrigado pelas dicas. Também vou correr atrás dessas questões porém, o meu grande problema com este código todo é que quando é capturada a exceção ele deveria inserir no banco de dados o número do erro, porém ele só grava zero. Tipo, parece que ele quando a exceção é capturada as instruções que deveriam ser executadas não são feitas como deveriam ser. O que poderia ser? Valews novamente pelas dicas!!! Abraços.

Olá,

Antes leia esse post sobre classe de conexao com banco, acredito que com isso você consiguirá melhorar a sua!

Sobre o erro:

catch ( Exception e ) { logETL.setNumErro(getNumLog()); logETL.setSiglaLoja(getLoja()); logETL.inserirErro(); e.printStackTrace ( ); } //catch

Verifique se isso getNumLog(); está realmente retornando algo.

Outra dica:
Entre no site da Caelum e faça download da apostila do curso básico. Leia o capítulo sobre Exception, com a leitura você terá diversas idéias de como melhorar seu tratamento de erro.

Abraços.