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: 20.976 ]

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

Criando classe Java para conectar e manipular dados no MySQL

Conectando com Bco Interbase/Firebird em Java

Upload Seguro de Arquivos em Aplicação Backend com Spring Boot, ClamAV e JWT

180 dias sem solução

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts