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)


Responder a