Uma explicação rápida.
Enquanto estudava o hibernate vi a necessidade de criar mensagens de log para melhor acompanhar o funcionamento do sistema. Vi que já tinha importado a biblioteca do log4j e resolvi entender o mesmo.
Para que o hibernate funcione corretamente é necessária a importação da biblioteca log4j, a versão utilizada por mim “log4j-1.2.11”. Para configurar o funcionamento do log4j a forma mais fácil e comum é atravéz de um arquivo “properties” o nome padrão é “log4j.properties” e deve estar de preferência na raiz da sua aplicação.
Vou colocar aqui um exemplo de configuração do arquivo, serve como fonte de pesquisa.
log4j.rootLogger= stdout, erros, info
### ordem || levels ALL <>
#mostra o log4j se configurando no console...
#log4j.debug=true
## direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=ERROR
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file erros.log ###
log4j.appender.erros=org.apache.log4j.DailyRollingFileAppender
log4j.appender.erros.File=./logs/erros.log
log4j.appender.erros.DatePattern='.'yyyy-MM-dd
log4j.appender.erros.layout=org.apache.log4j.PatternLayout
log4j.appender.erros.layout.ConversionPattern=%5p %d{dd MMM HH:mm:ss} [%t] %c - %m%n
log4j.appender.erros.Threshold=ERROR
log4j.appender.erros.FILE.MaxFileSize=10000KB
### direct messages to file info.log ###
log4j.appender.info=org.apache.log4j.FileAppender
log4j.appender.info.File=./logs/info.log
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.info.FILE.MaxBackupIndex=4
log4j.appender.info.Threshold=info
log4j.appender.info.FILE.MaxFileSize=5KB
Explicando o arquivo:
Na primeira linha são criadas tres saidas de informações os “appenders”, eu dei os nomes de stdout, erros e info.
Na segunda linha deixei um comentário tendo a ordem dos levels dos logs:
ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
Caso queira testar se o seu arquivo de configuração do log4j esteja sendo carregado com sucesso habilite o debug do log4j “#log4j.debug=true”;
Aqui estou gerando saídas no console para todos os logs de level ERROR ou superior, notem o começo de cada linha especificando qual appender esta sendo configurado” log4j.appender.(stdout)”. O ConversionPattern pode ser alterado de acordo com a necessidade.
## direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=ERROR
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
Aqui estou gerando um arquivo de logs com o nome erros.log dentro do diretório logs, netem que o tipo desse appender e “org.apache.log4j.DailyRollingFileAppender”. Esse arquivo será salvo diariamente com a data no formato especificado no DatePattern. Após a virada do dia quando ocorrer algum log será renomeado o arquivo erros.log acrecentando-se a data e será criado um novo arquivo erros.log.
### direct messages to file erros.log ###
log4j.appender.erros=org.apache.log4j.DailyRollingFileAppender
log4j.appender.erros.File=./logs/erros.log
log4j.appender.erros.DatePattern='.'yyyy-MM-dd
log4j.appender.erros.layout=org.apache.log4j.PatternLayout
log4j.appender.erros.layout.ConversionPattern=%5p %d{dd MMM HH:mm:ss} [%t] %c - %m%n
log4j.appender.erros.Threshold=ERROR
log4j.appender.erros.FILE.MaxFileSize=10000KB
E por ultimo crio um arquivo de log para todas as mensagens de level “INFO” geradas pelo sistema.
### direct messages to file info.log ###
log4j.appender.info=org.apache.log4j.FileAppender
log4j.appender.info.File=./logs/info.log
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.info.FILE.MaxBackupIndex=4
log4j.appender.info.Threshold=info
log4j.appender.info.FILE.MaxFileSize=5KB
Tentei controlar o tamanho do arquivo colocando 5KB para ver o que o log4j faria, mas realmente ele não fez nada. Caso descubra algo crio um novo post aqui.