Академический Документы
Профессиональный Документы
Культура Документы
r uma API de logging de mensagens como o Log4j para indicar os comportamentos de uma aplicao. O Log4j um um projeto open source distribudo pela Apache Software License e foi portado por autores independentes a C, C++, Python, ruby, Eiffel. Instalando Para utilizar o Log4j, voc precisa: Baixar o Log4j: http://logging.apache.org/site/binindex.cgi Adicionar o jar do Log4j no classpath
Lo4j Hello World package log; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; public class HelloWorld { static Logger logger = Logger.getLogger(HelloWorld.class); static public void main(String[] args) { logger.debug("Hello world."); } } Ao executar essa classe, ele no produzir nenhum logging, mas lanar o seguinte warning: log4j:WARN No appenders could be found for logger (log.HelloWorld). log4j:WARN Please initialize the log4j system properly. O Log4j est reclamando porque ns ainda no o configuramos. Existem vrias formas de configurar o Log4j. A forma mais simples e menos flexvel chamando o mtodo: BasicConfigurator.configure(); Agora que j sabemos a causa dos warnings gerados, vamos modificar a classe HelloWorld.
Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.
Portal Java Tutorial: Tutorial Log4J Por Guilherme Mello do Nascimento(JavaPlayer) package log; import org.apache.log4j.*; public class HelloWorld { static Logger logger = Logger.getLogger(HelloWorld.class); static public void main(String[] args) { BasicConfigurator.configure(); logger.debug("Hello world."); }
Ao executar a classe acima, ser gerada a seguinte sada: 10 [main] DEBUG log.HelloWorld Hello world. A sada contm: O tempo relativo, isto , o nmero de millisegundos que transcorreram at a invocao do logging. O nome da thread invocada entre colchetes. O nvel do logger. O nome do logger e a mensagem.
Receita para utilizar o Log4j em suas aplicaes: 1 Configurar o Log4j para o seu ambiente. Como foi dito anteriormente, o Log4j oferece diversas maneiras de configurao. 2 Em toda classe que voc deseje utilizar logging, recupere um objeto Logger invocando o mtodo Logger.getLogger() passando uma String, normalmente o nome da classe completo. O objeto Logger geralmente declarado como static final. H uma variao do mtodo Logger.getLogger(). Para uma classe HelloWorld em uma pacote com.log, os seguintes expresses so equivalentes: Logger.getLogger(com.log.HelloWorld); Logger.getLogger(HelloWorld.class.getName()); Logger.getLogger(HelloWorld.class);
Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.
Portal Java Tutorial: Tutorial Log4J Por Guilherme Mello do Nascimento(JavaPlayer) 3 Utilize a instncia de Logger para invocar os mtodos: debug(), info(), warn(), error(), fatal() Ou o mtodo mais genrico: log() Logger Uma das principais vantagens de qualquer API de logging sobre a simples System.out.println, reside na possibilidade de desabilitar certas declaraes de log enquanto outras permitidas so exibidas. O logger o ncleo do processo de logging. No Log4j existem 5 nveis normais de logger disponveis: static Level DEBUG
O nvel DEBUG designa informaes teis para debugar uma aplicao. static Level INFO
O nvel INFO designa informaes que focalizam no progresso da aplicao. static Level WARN
O nvel ERROR designa eventos de erro que podero permitir que a aplicao continue funcionando. static Level FATAL
O nvel FATAL designa eventos de erro severos que presumivelmente podero interromper a aplicao. Os mtodos ALL e OFF so intencionados somente para o gerenciamento. Appender O Log4j permite exibir logs em mltiplos destinos. Um Appender controla como ser a sada do log. Os Appenders pode ser:
Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.
ConsoleAppender
Eventos de log System.out ou System.err, usando um layout especificado pelo usurio. DailyRollingFileAppender
Estende FileAppender e realiza backup dos arquivos de log dado um certo tamanho. WriterAppender
Envia um e-mail quando um evento de log especfico ocorre. Tipicamente nos erros fatais. SocketAppender
Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.
Portal Java Tutorial: Tutorial Log4J Por Guilherme Mello do Nascimento(JavaPlayer) ConsoleAppender O ConsoleAppender, como o nome diz, adiciona no console, ou precisamente em System.out ou System.err formatando eventos com o layout especificado pelo usurio. Exemplo: ConsoleAppender appender = new ConsoleAppender(new PatternLayout()); O cdigo acima cria um ConsoleAppender, com o default PatternLayout. FileAppender O FileAppender, uma sub-classe de WriterAppender, adiciona eventos de log em um arquivo. Exemplo: FileAppender appender = null; try { appender = new FileAppender(new PatternLayout(),"myfile.log"); } catch(Exception e) {} WriterAppender O WriterAppender adiciona eventos para um java.io.Writer. Exemplo: WriterAppender appender = null; try { appender = new WriterAppender(new PatternLayout(),new FileOutputStream("filename")); } catch(Exception e) {} Layouts Os layouts so responsveis pelo formato de sada dos logs. Os trs principais tipos de layouts so: HTMLLayout
Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.
Portal Java Tutorial: Tutorial Log4J Por Guilherme Mello do Nascimento(JavaPlayer) package log; import java.io.*; import org.apache.log4j.*; public class HTMLExample{ static Logger logger = Logger.getLogger(HTMLExample.class); public static void main(String args[]){ // cria o layout HTMLLayout layout = new HTMLLayout(); // cria o appender do tipo WriterAppender WriterAppender appender = null; try { // cria o arquivo HTML FileOutputStream output = new FileOutputStream("output.html"); // cria um WriterAppender passando o layout e o file appender = new WriterAppender(layout,output);
// adicionando o appender criado ao logger logger.addAppender(appender); // ajustando o nvel do log logger.setLevel((Level) Level.DEBUG); // logando logger.debug("Logando um DEBUG"); logger.info("Logando um INFO"); logger.warn("Logando um WARN");
} }
Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.
PatternLayout
Formata a sada do log baseado em um padro de converso. O PatternLayout retorna uma String que pode ser modificada pela converso de pattern. A converso de pattern composta de um literal e de um especificador de converso. Cada converso comea com um sinal de porcentagem (%) e seguido por um modificador de formato opcional e um caractere de converso. O caractere de converso controla o tipo de dado para uso: nome do logger, data, thread.
Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.
Relao dos principais caracters de converso: %C %D %l %L %m %M %p %r %t %n exibe o nome da classe exibe a data do evento de log exibe o mtodo que chamou o evento de log exibe a o nmero da linha onde o evento de log foi requisitado exibe a mensagem o mtodo em que o evento de log foi requisitado exibe o nvel do evento de log exibe o nmero de milisegundos passados desde o incio do evento de log exibe o nome da thread que gerou o evento de log quebra de linha
Exemplo: package log; import org.apache.log4j.*; public class PatternLayoutExample{ static Logger logger = Logger.getLogger(PatternLayoutExample.class); public static void main(String args[]) { // criando um output pattern String padrao_log = "Milisegundos desde o nicio do programa: %r %n"; padrao_log += "Classe: %C %n"; padrao_log += "Data: %d{dd/MM/yyyy} %n"; padrao_log += "Hora: %d{HH:mm:ss} %n"; padrao_log += "Local: %l %n"; padrao_log += "Mensagem: %m %n"; padrao_log += "----------------------------------------%n"; // criando um PatternLayout passando o output pattern criado PatternLayout layout = new PatternLayout(padrao_log); // criando um ConsoleAppender passando o layout criado ConsoleAppender appender = new ConsoleAppender(layout); // adicionando o appender ao logger logger.addAppender(appender); // ajustando o nvel logger.setLevel((Level) Level.DEBUG);
Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.
Portal Java Tutorial: Tutorial Log4J Por Guilherme Mello do Nascimento(JavaPlayer) // logando logger.debug("Logando um DEBUG"); logger.info("Logando um INFO"); logger.warn("Logando um WARN"); } }
SimpleLayout
Formata a sada do log de uma maneira muito simples: exibindo o nvel, um trao e aps, a mensagem de log. Exemplo: package log; import org.apache.log4j.*; public class SimpleLayoutExample{ static Logger logger = Logger.getLogger(SimpleLayoutExample.class); public static void main(String args[]){ // cria o layout SimpleLayout layout = new SimpleLayout(); // cria o appender do tipo FileAppender FileAppender appender = null; try{ /* criao do FileAppender passando o layout, nome do arquivo, true se o arquivo ser sobrescrito e false se no for sobrescrito */ appender = new FileAppender(layout,"output.log",true);
} catch(Exception e){ // logando uma exception, caso ocorra logger.error("Erro: " + e.getMessage()); } // adicionando o appender criado ao logger logger.addAppender(appender); // ajustando o nvel do log logger.setLevel((Level) Level.DEBUG);
Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.
} }
At a prxima !!! Comentrios, crticas ou sugestes: javaplayer@hotmail.com Referncias Log4j The Complete Manual
Portal Java A maior comunidade de Java do Brasil www.portaljava.com Todos os direitos reservados. Proibida a utilizao ou replicao deste material sem prvio aviso.