Gerando logs em Java

Nesse artigo, mostrarei a importância de gerar logs dentro de um sistema e como isso facilita a manutenção do código.

[ Hits: 24.447 ]

Por: Clauber Cesario em 07/07/2014


Classe que gera log



Bom, como disse, tem uma classe genérica que poderá gerar nosso log. Essa classe é genérica, porque não depende apenas de uma classe. Essa classe serve para qualquer classe para que eu possa gerar o log.

Obs.: os arquivos gerados de log, geralmente são com a extensão txt, log ou xml. Existe a opção de você gerar o seu log em XML e a partir daí, você pode criar um programinha para ler esse XML mostrando mais detalhes, mas aí vai da sua criatividade.

Minha classe que gera logs ficou assim:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;


public class geraLog
{
    public void LogTxt(String nome,String classe)
    {
        File arquivoTxt = new File("/home/klone/log_programa.txt");

        if(!arquivoTxt.exists())
        {
            try
            {   //Cria o arquivo
                arquivoTxt.createNewFile();
                System.out.println("Arquivo criado");

                //salva o arquivo
                FileWriter  writer = new FileWriter(arquivoTxt);
                writer.write("Problema:" + nome+"\n");
                writer.write("Classe:"+classe+"\n");
                writer.write("Data:"+ new Date()+"\n");

                writer.close();
                System.out.println("Arquivo salvado");
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
        }
        else
        {
            try
            {
                FileReader reader = new FileReader(arquivoTxt);
                BufferedReader br = new BufferedReader(reader);
                String linha = br.readLine();
                FileWriter  writer = new FileWriter(arquivoTxt);

                while(linha != null)
                {
                    writer.write(linha+"\n");
                    br.readLine();
                    linha = br.readLine();
                }

                br.close();
                reader.close();

                writer.write("Problema:" + nome+"\n");
                writer.write("Classe:"+classe+"\n");
                writer.write("Data:"+ new Date());
                writer.close();
                System.out.println("Arquivo salvado");
            }
            catch(IOException err)
            {
                err.printStackTrace();
            }
        }
    }
}

Logo no começo, eu crio o arquivo responsável por gravar os erro. Pode-se também fazer com que gere vários arquivos de log, mas nesse exemplo, estarei mostrando como salvar todo os erros num arquivo só.

Como podemos ver, é um método que recebe a mensagem de erro e a classe onde ocorreu o erro.

Essa classe, nada mais é que manipulação de arquivos, onde verifico se o arquivo existe. Se não existir, crio o arquivo e salvo as informações. Se o arquivo existir, abro ele e adiciono mais informações ao final.

Outro dado importante, é que coloco a data e a hora da ocorrência do erro, um dado fundamental.

Assim gera-se nosso log de erro simples.

Conclusão

Logs de erros são fundamentais para um bom sistema estruturado.

Sem eles, fica difícil realizar manutenção no código. Além disso, deixa o usuário mais confiável, pois sabendo-se onde ocorreu o erro, pode-se concertá-lo mais rapidamente.

Logs são mais do que um arquivo falando onde que ocorreu um erro, são um meio de comunicação entre o software e o usuário final.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Classe main / Classe conexão com MySQL
   3. Classe que gera log
Outros artigos deste autor

Introdução ao Java - Hello World

jQuery - Criando um simples jogo da velha

Leitura recomendada

Convertendo softwares utilizando OpenOffice e Java

Android e Eclipse no Ubuntu 11.10 - Problemas? Eis a solução

Gerando arquivos PDF com Java e iText

Hibernate - Persistindo dados como se fosse objetos

Conectando com Bco Interbase/Firebird em Java

  
Comentários
[1] Comentário enviado por Ed_slacker em 07/07/2014 - 07:29h

Não seria mais fácil usar o Log4J?

[2] Comentário enviado por klone1 em 07/07/2014 - 10:10h

Sim edi_oliver, o uso de uma framework sempre facilita nossa vida na programação. Mas meu objetivo aqui era mostrar como são gerado logs a partir do zero.

[3] Comentário enviado por raphaeljava em 10/11/2016 - 19:18h

Boa noite Clauber ,

Muito bom o seu tutorial, copiei seu código aqui, e na hora de declarar as variáveis está dando erro na classe Conexao:

geraLog log;

Sou leigo no assunto, estou fazendo um projeto de faculdade com a finalidade de cadastrar usuários do sistema como administrador, usuário comum e etc.., e ao invés de criar um arquivo eu gostaria que o sistema gravasse as informações em um banco de dados de logs por exemplo, com as informações de data, quem entrou no sistema, as alterações e os erros.

Você tem alguma dica de como posso fazer isso?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts