Log4J


Nesse tutorial vamos mostrar como configuramos de forma rádida a API Log4j rapidamente em projetos Java. Vamos entender um pouco como funciona o mecanismo de nível de Logs da API e configurar um projeto simples.

1 - Configurando o pom.xml do projeto

Para que possamos utilizar a API de logs, a primeira coisa que temos que fazer é adicionar a dependência ao Projeto, da seguinte forma:

  <dependencies>
    ...
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.13</version>
    </dependency>
  </dependencies></pre>

Assim que adicionamos a dependência, podemos ir para o próximo passo, criar um arquivo de properties, com as caracteristicas que desejamos para nosso log.

2 - Criando um arquivo log4j.properties

O arquivo de properties deve ficar no caminho:

..\log4j-prj\src\main\resources

Nota: estou considerando o caminho acima, caso você tenha descompactado o exemplo de download, no final da página

#informando o level (Debug) e as saidas (standard e R)
log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log

log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n

3 - Entendendo os pontos importantes

Na linha:

log4j.rootLogger=debug, stdout, R

Estamos definindo duas coisas, a primeira é o nível da saída do Log, no nosso exemplo, DEBUG, e a segunda, onde vamos redirecionar as saidas dos logs, nesse caso, stdout (saída padrão, console, são exibe a mensagem e não grava em lugar nenhum) e R que nesse exemplo foi configurado para direcionar a saída em arquivo.

As linhas:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

e:

log4j.appender.R=org.apache.log4j.RollingFileAppender

Definem o tipo de Appender que conectaremos ao stdout (Console) e ao R (Arquivo).

O Appender RollingFileAppender define que vamos direcionar a saida para um arquivo e que esse arquivo ao atingir um limite predefinido, será feita uma rolagem, ou seja, um backup do atual e criado um novo em branco.

Definimos através do ConversionPattern qual o formato do log que será gerado

Quando utilizamos o RollingFileAppender podemos configurar o tamanho do arquivo, através do parametro MaxFileSize, o local onde serão gravado o arquivo File e a quantidade de backups, uma vez que estamos utilizando o Appender que rotaciona arquivos, MaxBackupIndex.


Conclusão

Esse exemplo é um caso bem simples de como deixar a configuração do log dentro do projeto, quando estamos desenvolvendo aplicações que são executadas dentro de um container como o JBoss, por exemplo, podemos deixar a configuração dentro do próprio container, e nesse caso usamos a api de log do container, dispensando o uso do Log4j. Essa decisão fica com o Arquiteto responsável pelo projeto, ao analisar as vantagens e desvantagens, pode decidir o que é melhor.


Download

Caso queira ver o exemplo funcionando, você pode fazer o download do mesmo, clicando em: Exemplo do tutorial.


Referências

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