Usando logging no JDK 1.4
Um dos recursos adicionados ao JDK 1.4 foi o pacote java.util.logging
que permite que aplica��es Java fa�am o uso de Logging, algo como o
bastante utilizado System.out.println(), mas de forma eficiente, r�pida
e pr�tica.
O exemplo abaixo � altera��o da classe ConcatStringBuffer, que j� foi
utilizada aqui no Dicas-List, mas que agora faz o uso do pacote de Logging.
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.LogManager;
public class ConcatStringBuffer {
private static Logger theLogger =
Logger.getLogger(ConcatStringBuffer.class.getName());
public static void main(String args[]) {
java.util.Date inicio = new java.util.Date();
theLogger.fine("Inicio: "+ inicio);
StringBuffer var = new StringBuffer();
for (int i=0; i<10000; i++ ) {
var.append(i);
}
java.util.Date fim = new java.util.Date();
theLogger.fine("Fim..: "+ fim);
theLogger.info("Tempo: "+
(fim.getTime() - inicio.getTime())+ " milisegundos");
}
}
No exemplo acima os logs que apresentam os tempos de in�cio e fim s�o
classificadas no n�vel FINE e o �ltimo log, que mostra o tempo total de
execu��o, tem o n�vel INFO.
O Logging tem 5 n�veis indo do mais baixo, FINEST, utilizado para
informa��es como Debug, at� o mais alto, o SEVERE utilizada para
mensagens de erros graves no sistema. A ordem �:
FINEST - FINER - FINE - CONFIG - INFO - WARNING - SEVERE
Ao executar o exemplo acima a sa�da no console ser�:
Sep 2, 2002 3:41:32 PM ConcatStringBuffer main
INFO: Tempo: 251 milisegundos
Apenas o logging de n�vel INFO foi impresso porque por default a JVM
utiliza o arquivo logging.properties localizado no diret�rio
%JAVA_HOME%/JRE/lib. Este arquivo est� configurado, tamb�m por default,
para imprimir apenas dos n�veis de INFO ou acima.
Uma alternativa � criar um arquivo de configura��o de LOG para a sua
aplica��o e ent�o customizar este arquivo.
O exemplo abaixo � um arquivo de configura��o simplifacado que envia as
mensagens de LOG para o console e tamb�m para um arquivo arquivo f�sico
java.log.
Este arquivo de configura��o pode ter qualquer nome, mas aqui vou
cham�-lo de log.properties.
########################################################################
handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
# Default global logging level.
.level= FINEST
java.util.logging.FileHandler.pattern = ./java.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
#java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
# Limita as mensagens que s�o impressas no console para INFO e acima
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter =
java.util.logging.SimpleFormatter
#########################################################################
Colocando este arquivo (log.properties) no mesmo diret�rio onde est� o
ConcatStringBuffer.class voc� pode executar a classe enviando como
par�metro para a JVM o local onde esta o arquivo, em nosso exemplo no
mesmo diret�rio.
java -Djava.util.logging.config.file=log.properties ConcatStringBuffer
A sa�da desta execu��o vai mostrar no console a mensagem:
Sep 2, 2002 4:05:10 PM ConcatStringBuffer main
INFO: Tempo: 180 milisegundos
E no arquivo java.log a sa�da ser� um arquivo XML, j� que no arquivo
log.properties foi configurado para o FileHandler a sa�da XMLFormatter.
<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
<record>
<date>2002-09-02T16:05:10</date>
<millis>1030993510412</millis>
<sequence>0</sequence>
<logger>ConcatStringBuffer</logger>
<level>FINE</level>
<class>ConcatStringBuffer</class>
<method>main</method>
<thread>10</thread>
<message>Inicio: Mon Sep 02 16:05:10 BRT 2002</message>
</record>
<record>
<date>2002-09-02T16:05:10</date>
<millis>1030993510472</millis>
<sequence>1</sequence>
<logger>ConcatStringBuffer</logger>
<level>FINE</level>
<class>ConcatStringBuffer</class>
<method>main</method>
<thread>10</thread>
<message>Fim..: Mon Sep 02 16:05:10 BRT 2002</message>
</record>
<record>
<date>2002-09-02T16:05:10</date>
<millis>1030993510472</millis>
<sequence>2</sequence>
<logger>ConcatStringBuffer</logger>
<level>INFO</level>
<class>ConcatStringBuffer</class>
<method>main</method>
<thread>10</thread>
<message>Tempo: 180 milisegundos</message>
</record>
</log>
O LOG4J tamb�m � uma API para logging desenvolvida pelo Jakarta/Apache e
que surgiu antes da especifica��o de logging do JDK e � bastante
utilizada em v�rios projetos Java em todo o mundo.
Vale a pena conhecer: http://jakarta.apache.org/log4j
O pacote Protomatter, tamb�m j� citado aqui no Dicas-List como uma
implementa��o de Pool de Conex�es JDBC, tamb�m possui uma API para
Logging e � bem pr�tica de usar, principalmente quando usado com o Tomcat.
http://protomatter.sourceforge.net/1.1.8-pre5/index.html
O Lumberjack � um projeto Open Source que fornece uma implementa��o do
java.util.logging para as vers�es 1.2 e 1.3 do JDK.
http://javalogging.sourceforge.net/
A inten��o do dicas-list � apenas apontar um caminho, v�rios datalhes
sobre Logging n�o foram citados por falta de espa�o mas voc� encontrar�
mais informa��es nos links abaixo:
An Introduction to the Java Logging API
http://www.onjava.com/pub/a/onjava/2002/06/19/log.html
Java Logging Overview
http://java.sun.com/j2se/1.4/docs/guide/util/logging/overview.html
Logging 1.4 JAVADOC API
http://java.sun.com/j2se/1.4/docs/api/java/util/logging/package-summary.html
Bons c�digos!!!
______________________________________________________________________________
Handerson Ferreira Gomes
Summa Technologies
Boletim Dicas Java - Sua dose di�ria de Java.
================================================================================
[dicas-list] circula diariamente com pequenas dicas sobre a plataforma Java e �
mais um servi�o da Sociedade de Usu�rios Java - http://www.soujava.org.br
*** SouJava - Fortalecendo a Comunidade Java Brasileira! ***
- Para contribuir com uma dica, envie um e-mail para [EMAIL PROTECTED]
- Participe de outras listas de discuss�o sobre a linguagem Java.
Saiba mais em http://www.soujava.org.br/lista.htm
--------------------------------------------------------------------------------
- Para assinar este boletim: mailto:[EMAIL PROTECTED]
- Para cancelar sua assinatura: mailto:[EMAIL PROTECTED]
- Dicas anteriores: http://www.mail-archive.com/dicas-list%40soujava.org.br
- Para discutir sobre as dicas, acesse o Mundo OO (http://www.mundooo.com.br)