Pular para o conteúdo principal

Criando arquivos de log com Log4J


Olá pessoal, hoje iremos ver como criar logs em aplicações Java com a ferramenta Apache Log4j.

O que é um arquivo de log ? 

Um arquivo de log, é um arquivo geralmente em formato texto onde as aplicações escrevem informações sobre seu funcionamento, erros, etc. 

É muito importante um aplicativo ter um arquivo de log, porque com ele conseguimos monitorar a execução e também diagnosticar os locais exatos quando um erro é gerado.

O maior exemplo de geração de logs, e que praticamente todo desenvolvedor já utilizou, são os logs de execução dos Containers Java, com estes arquivos é possível analisar todo o funcionamento do Container e também achar os métodos que lançam algum tipo de Exception na execução dos aplicativos.

O Log4J

O Log4j é uma ferramenta desenvolvida e mantida pela Fundação Apache, com ela podemos criar arquivos de log de maneira fácil e padronizada, sem dúvida o log4j é a ferramenta de log mais utilizada em aplicações Java, vários projetos open source a utilizam, entre elas estão Hibernate e Spring Framework.

O site oficial onde podemos efetuar o download e ter exemplos da utilização é o abaixo:

http://logging.apache.org/log4j/1.2/

Níveis de log

Um ponto importante a ser compreendido ao trabalhar com Log4J são os níveis de log, eles estão divididos em 4 níveis, que são eles:

DEBUG: é o maior nível de log, geralmente utilizado para detalhamento completo das operações realizadas no sistema.

INFO: nível utilizado para mostrar informações importantes, este nível geralmente é o mais utilizado.

WARNING: é geralmente utilizado para mostrar algo que requer atenção, mas não é considerado um erro no sistema.

ERROR: nível para rastreamento de erro, onde podemos exibir uma mensagem e também a exceção gerada.

Arquivo de configuração

Para utilizar o log4j devemos ter um arquivo de configuração onde descrevemos toda característica da geração de log, este arquivo pode ser um arquivo properties ou xml, neste tutorial iremos utilizar um arquivo no formato properties.

Aplicação de exemplo

Para mostrar o funcionamento do log4j, temos uma aplicação que irá gerar os arquivos de logs estruturados da seguinte forma:
  • Criar 2 arquivos, com isso cada parte do sistema poderia ter seu arquivo de log separado, por exemplo: separar o log de persistência do log de domínio;
  • Quebrar os arquivos de log por dia, assim cada dia teria seu arquivo de log, oque no momento de leitura dos arquivos ficaria mais fácil de encontrar uma informação.
O projeto ficou estruturado da seguinte forma:


Estrutura do projeto de exemplo.

Abaixo as 3 classes e o arquivo de configuração dos logs:

Classe de execução do aplicativo e responsável por carregar o arquivo de configuração de log4J.

Classe que escreve no arquivo app_one.log.

Classe que escreve no arquivo app_two.log.

Arquivo de configuração do log4J.

No arquivo de configuração, determinamos todas as configurações para gerar os arquivos de log, em nosso exemplo, as configurações são as seguintes:
  • Log ajustado para o nível de DEBUG;
  • Configurado para que o log seja exibido no console de execução da aplicação, isso á feito através do appender CONSOLE;
  • Criados appenders para salvar os logs em 2 arquivos de separados, estes appenders são ARQUIVO_APP_ONE ARQUIVO_APP_TWO;
  • Ajustado para que em ambos os arquivos, a quebra seja feita por dia, ou seja, a cada dia será gerado um arquivo diferente, com isso fica mais fácil a rastreabilidade de erros ao analisar os arquivos de log da aplicação.
Ao executar o aplicativo de exemplo, os arquivos de logs serão salvos no diretório logs, este diretório é determinado no arquivo de configuração, após a execução os arquivos terão o seguinte conteúdo:

Arquivos de logs gerados: app_one.log e app_two.log.

Agora para testar o funcionamento do log4J, altere o nível de log e veja o resultado nos arquivos gerados.

Até a próxima.

Comentários

Postagens mais visitadas deste blog

Utilizando LocalDate, LocalDateTime e LocalTime na Prática

Tudo bem pessoal, hoje iremos avaliar e analisar operações de manipulação de Datas envolvendo a JavaTime API introduzida no Java 8.

Exemplos da java.time API
Já se passaram alguns anos desde o lançamento do Java 8 e mesmo após este período, há empresas que desconhecem o poder da java.time API, esta foi uma nova API de datas introduzida no Java 8 visando resolver problemas que tínhamos com as velhas classes Date e Calendar.

Vamos mostrar vários exemplos práticos do uso da API:
Criação de objetos No exemplo abaixo, estamos criando os objetos para manipulação de datas, perceba que temos 3 tipos, sendo LocalDate para manipular datas, LocalDateTime para manipular data/hora e LocalTime para horas:
LocalDate localDate = LocalDate.now(); LocalDateTime localDateTime = LocalDateTime.now(); LocalTime localTime = LocalTime.now();
Utilizando formatação Aqui realizamos a operação de formatação, perceba que não foi necessário utilizar a classe SimpleDateFormat, que usaríamos em conjunto com D…

Lendo e Manipulando arquivos CSV com Java

Olá hoje veremos como realizar a leitura e manipulação de arquivos CSV com Java, mostrando que as novas versões da plataforma Java deixaram algumas tarefas simples de serem realizadas.

Exemplo de Arquivo Hoje em dia é comum ao realizar integrações ou carga de dados o uso de arquivos CSV, isto porque, este arquivo possui uma estrutura de fácil entendimento e simples de manipular na maioria das plataformas de desenvolvimento.

Para realizar a leitura dos dados vamos manipular um arquivo com as seguintes colunas: namecpfagephone address:

name;cpf;age;phone;address caio;123456789;20;1145223643;AvenidaPaulista vinicius;147852369;18;1125253625;AvenidaManoel sandra;963258741;30;1174587858;RuaTeixeira regina;125478522;40;1145254536;RuaFernando fernando;785245563;42;1145253669;RuaPereira augusto;456123014;50;1125363633;AvenidaPaulinia maria;456123789;10;1125455525;AvenidaNossaSenhora
Para representar os dados em objetos Java iremos utilizar a seguinte classe:

importlombok.AllArgsConstruc…

Versionamento de Banco Dados com Flyway

Olá pessoal, hoje iremos analisar e aprender como realizar o versionamento e gerenciamento das bases de dados relacionais utilizando o framework Flyway.

Versionamento de Banco Dados Ao trabalhar com desenvolvimento de sistemas é comum realizarmos o versionamento, isso porque uma aplicação pode necessitar de correções, novas funcionalidades e evoluções, onde para garantir a compatibilidade e cuidar do seu ciclo de vida, geramos versões onde é especificado quais itens estão presentes em cada release.
Vamos imaginar seguinte cenário: Sistema ERP1.0.0: Entrega dos módulos Financeiro e RH;1.1.0: Entrega do módulo Contas a Receber. Perceba que a ideia é controlar o que cada versão possui de diferente, e para controlar essas mudanças no lado da aplicação existem várias técnicas e ferramentas, mas e para controlar as mudanças no lado do Banco de dados ? 
Para isso podemos utilizar ferramentas de versionamento que ajudam a realizar este controle, a ferramenta que iremos utilizar é o Flyway.
Con…