SlideShare uma empresa Scribd logo
1 de 24
Capítulo 10 Depurando e Usando Log
Esquema ,[object Object],[object Object],[object Object],[object Object],[object Object]
Depuração e Log ,[object Object],[object Object],[object Object],[object Object],[object Object],<init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param>
Depuração e Log: JSP String param = getServletConfig(). getInitParameter(“debug”); If (param.equals(“2”)){ System.out.println(“Mensagem debug”); } Web.xml Documento JSP, Servlet <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param>
Jakarta Commons Logging (JCL) ,[object Object],[object Object],# uso do SimpleLog org.apache.commons.logging.Log =  org.apache.commons.logging.impl.SimpleLog # uso do log4j # Obs: necessita do arquivo log4j.properties org.apache.commons.logging.Log =  org.apache.commons.logging.impl.Log4JCategoryLog
Jakarta Commons Logging (JCL) ,[object Object],Ponte Apache Commons Logging Log4J Java 1.4 Logging API LogKit SimpleLog NoOptLog commons-logging. properties Loggers do JCL Loggers Compatíveis com JCL Aplicação Web Struts JavaEE Visão Controle Modelo Persistência
Jakarta Commons Logging (JCL) # exemplo de uso do SimpleLog org.apache.commons.logging.Log  = org.apache.commons.logging.impl.SimpleLog # exemplo de uso do log4j # Obs: necessita do arquivo log4j.properties org.apache.commons.logging.Log  = org.apache.commons.logging.impl.Log4JCategoryLog
Jakarta Commons Logging (JCL) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Usando o  Jakarta Commons Logging (JCL) ,[object Object],[object Object],Log log = LogFactory.getLog( LoginAction.class ); if (log.isInfoEnabled( )){ // Log do usuário autenticado log.info( &quot;E-mail: &quot; + email ); } StringBuffer buf = new StringBuffer( ); buf.append( &quot;Login Realizado em &quot; ); buf.append( new Date() ); ... buf.append( cliente.getEmail ( ) ); // Log para fins de auditoria log.debug( buf.toString( ) );
Usando o log4j ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Usando o log4j ,[object Object],[object Object],[object Object],[object Object]
Usando o log4j: Propriedades de um Appender # Criando um anexador: rolling com nível DEBUG log4j.rootLogger =DEBUG, rolling # rolling tem como destino implementação em RollingFileAppender log4j.appender.rolling =org.apache.log4j.RollingFileAppender # Nome do arquivo log4j.appender.rolling.File =saida.log # Tamanho máximo do log log4j.appender.rolling.MaxFileSize =300KB # Número de backups definidos do arquivo log4j.appender.rolling.MaxBackupIndex =1 # Definição da classe e padrão de formatação log4j.appender.rolling.layout =org.apache.log4j.PatternLayout log4j.appender.rolling.layout.ConversionPattern  = %d{ABSOLUTE} - %p %c - %m%n 1 2 5 6 7 3 4
Usando o log4j: Níveis de logging ,[object Object]
Usando o log4j: Níveis de logging // get a logger instance named &quot;com.foo&quot; Logger  logger = Logger.getLogger(&quot;com.foo&quot;); // Now set its level. Normally you do not need to set the // level of a logger programmatically. This is usually done // in configuration files. logger.setLevel(Level.INFO); Logger barlogger = Logger.getLogger(&quot;com.foo.Bar&quot;); // This request is enabled, because WARN >= INFO. logger.warn(&quot;Low fuel level.&quot;); // This request is disabled, because DEBUG < INFO. logger.debug(&quot;Starting search for nearest gas station.&quot;); // The logger instance barlogger, named &quot;com.foo.Bar&quot;, // will inherit its level from the logger named // &quot;com.foo&quot; Thus, the following request is enabled // because INFO >= INFO. barlogger.info(&quot;Located nearest gas station.&quot;); // This request is disabled, because DEBUG < INFO. barlogger.debug(&quot;Exiting gas station search&quot;);
Usando o log4j: Layout ,[object Object],1 Time 2 Thread 3 Category 4 Context 176 [main] INFO  com.foo.Sort - Populating an array of 2 elements. -1- --2--- -3--  --------------------4----------------------------
Log4j.properties: Pattern Pattern: &quot;%r [%t] %-5p %c{2} - %m%n&quot;  176 [main] INFO examples.Sort –  Populating an array of 2 elements in reverse order  r - numero de milissegundos transcorridos desde o inicio do  programa  t - nome da thread que gerou o evento de log  p - prioridade (o -5 indica que deve alinhar a direita se o número de  caracteres for menor que cinco)  c - nome da classe (2 indica que se o nome completo da classe for  &quot;a.b.c&quot; por exemplo, deverá ser mostrado apenas &quot;b.c&quot;)  m - é a mensagem (não pode faltar !)  n - é o separador de linhas padrão do sistema operacional - &quot;&quot; ou  &quot;&quot;
Log4j.properties # Criando dois anexadores: stdout e rolling, com nível DEBUG log4j.rootLogger= DEBUG ,  stdout ,  rolling # stdout tem como destino o console log4j.appender.stdout =org.apache.log4j.ConsoleAppender # Formato do stdout definido com uso de PatternLayout log4j.appender.stdout.layout =org.apache.log4j.PatternLayout # Definição do padrão para saída log4j.appender.stdout.layout .ConversionPattern = %5p [%t] (%F:%L) - %m%n # rolling tem como destino implementação em RollingFileAppender log4j.appender.rolling =org.apache.log4j.RollingFileAppender # Nome do arquivo log4j.appender.rolling.File =saida.log # Tamanho máximo do log log4j.appender.rolling.MaxFileSize =300KB # Número de backups definidos do arquivo log4j.appender.rolling.MaxBackupIndex =1 # Definição da classe e padrão de formatação log4j.appender.rolling.layout =org.apache.log4j.PatternLayout log4j.appender.rolling.layout.ConversionPattern  = %d{ABSOLUTE} - %p %c - %m%n
Log4j.properties <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE log4j:configuration PUBLIC &quot;http://logging.apache.org/log4j/docs/api/org/apache/log4j/xml/log4j.dtd&quot;> <log4j:configuration> <appender name=&quot;stdout&quot; class=&quot; org.apache.log4j.ConsoleAppender &quot;> <layout class=&quot; org.apache.log4j.PatternLayout &quot;> <param name=&quot; ConversionPattern &quot; value=&quot;%d{ABSOLUTE} %5p %c{1}:%L - %m%n&quot; /></layout> </appender>  <logger name=&quot; org.springframework &quot;> <level value=&quot;info&quot;/> </logger>  <logger name=&quot; org.acegisecurity &quot;> <level value=&quot;info&quot;/> </logger>  <root> <priority value=&quot; debug &quot; /> <appender-ref ref=&quot; stdout &quot; /> </root> </log4j:configuration>
Log4j.properties <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?> <log4j:configuration>  <appender name=&quot; trace &quot; class=&quot;org.apache.log4j.FileAppender&quot;> <param name=&quot;file&quot; value=&quot;/trace.log&quot; /> <layout class=&quot;org.apache.log4j.PatternLayout&quot;> <param name=&quot;ConversionPattern“ value=&quot;[%d{ISO8601}] %-5p %c %m %n&quot;/> </layout> <filter class=&quot;org.apache.log4j.varia.LevelRangeFilter&quot;> <param name=&quot;LevelMin&quot; value=&quot;TRACE&quot;/> <param name=&quot;LevelMax&quot; value=&quot;DEBUG&quot;/> </filter> </appender>  <appender name=&quot; error &quot; class=&quot;org.apache.log4j.FileAppender&quot;> <param name=&quot;file&quot; value=&quot;/error.log&quot; /> <layout class=&quot;org.apache.log4j.PatternLayout&quot;> <param name=&quot;ConversionPattern“ value=&quot;[%d{ISO8601}] %-5p %c %m %n&quot;/> </layout> <filter class=&quot;org.apache.log4j.varia.LevelRangeFilter&quot;> <param name=&quot;LevelMin&quot; value=&quot;INFO&quot;/> <param name=&quot;LevelMax&quot; value=&quot;FATAL&quot;/> </filter> </appender> <root> <level value=&quot;all&quot; /> <appender-ref ref=&quot;trace&quot;/> <appender-ref ref=&quot;error&quot;/> </root>  </log4j:configuration>
O Impacto no Desempenho com o uso do log4j ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Usando a Java 1.4 Logging API ,[object Object],[object Object],[object Object],try { ... fluxo normal de execução } catch (IOException e) { // exceção – uso de log para registro // Cria um suporte para escrever o log no arquivo teste.log FileHandler handler = new FileHandler(&quot;teste.log&quot;);  // Associa ao logger Logger logger = Logger.getLogger(&quot;curso.log.exemplo&quot;); logger.addHandler(handler); logger.log(Level.SEVERE, &quot;Exceção de I/O&quot;, e); }
Usando a Java Logging API ,[object Object],[object Object],[object Object]
Revisão e Laboratório
Referências ,[object Object]

Mais conteúdo relacionado

Mais procurados

Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
Mateus Padua
 
Timers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOSTimers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOS
Mayara Mônica
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScript
Raphael Donaire Albino
 

Mais procurados (20)

Log4net
Log4netLog4net
Log4net
 
Pilhas
PilhasPilhas
Pilhas
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPyDesenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
Aula14 - Funções em PHP
Aula14 - Funções em PHPAula14 - Funções em PHP
Aula14 - Funções em PHP
 
Androidconf 2011 lecheta
Androidconf 2011 lechetaAndroidconf 2011 lecheta
Androidconf 2011 lecheta
 
Aula11 - PHP
Aula11 - PHPAula11 - PHP
Aula11 - PHP
 
Aula12- PHP
Aula12- PHPAula12- PHP
Aula12- PHP
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perlLogging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
 
Aula 4
Aula 4Aula 4
Aula 4
 
Timers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOSTimers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOS
 
Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on Rails
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScript
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQL
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
 
Meet up teste api htt-party cucumber
Meet up   teste api htt-party cucumberMeet up   teste api htt-party cucumber
Meet up teste api htt-party cucumber
 
Kernel cooperativo
Kernel cooperativoKernel cooperativo
Kernel cooperativo
 
Desenvolvimento Rápido de Programas Linha de Comando
Desenvolvimento Rápido de Programas Linha de ComandoDesenvolvimento Rápido de Programas Linha de Comando
Desenvolvimento Rápido de Programas Linha de Comando
 

Semelhante a Struts Cap10 DepuraçãO E Log

PrincipaiPrincipais Frameworks e Documentação
PrincipaiPrincipais Frameworks e DocumentaçãoPrincipaiPrincipais Frameworks e Documentação
PrincipaiPrincipais Frameworks e Documentação
elliando dias
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04
Diego Pacheco
 
Apresentacao log
Apresentacao logApresentacao log
Apresentacao log
pedrohfsd
 
Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02
Diego Pacheco
 

Semelhante a Struts Cap10 DepuraçãO E Log (20)

PrincipaiPrincipais Frameworks e Documentação
PrincipaiPrincipais Frameworks e DocumentaçãoPrincipaiPrincipais Frameworks e Documentação
PrincipaiPrincipais Frameworks e Documentação
 
Cobertura - Ferramenta para teste de cobertura
Cobertura - Ferramenta para teste de coberturaCobertura - Ferramenta para teste de cobertura
Cobertura - Ferramenta para teste de cobertura
 
EMMA - Ferramenta para teste de cobertura
EMMA - Ferramenta para teste de coberturaEMMA - Ferramenta para teste de cobertura
EMMA - Ferramenta para teste de cobertura
 
Collectd
CollectdCollectd
Collectd
 
Mini Curso Python
Mini Curso PythonMini Curso Python
Mini Curso Python
 
Webinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosWebinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcados
 
Tutorial Dwr - Configuração e Uso
Tutorial Dwr - Configuração e UsoTutorial Dwr - Configuração e Uso
Tutorial Dwr - Configuração e Uso
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Python para Programadores
Python para ProgramadoresPython para Programadores
Python para Programadores
 
Java1
Java1Java1
Java1
 
Apresentacao log
Apresentacao logApresentacao log
Apresentacao log
 
Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02
 
Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGil
 
(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Sapo Sessions PHP
Sapo Sessions PHPSapo Sessions PHP
Sapo Sessions PHP
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 

Mais de Waldir R. Pires Jr

Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014
Waldir R. Pires Jr
 
Proposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOPProposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOP
Waldir R. Pires Jr
 
Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014
Waldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1
Waldir R. Pires Jr
 
Desenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaMEDesenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaME
Waldir R. Pires Jr
 

Mais de Waldir R. Pires Jr (15)

Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014
 
Proposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOPProposta de projeto de pesquisa UFOP
Proposta de projeto de pesquisa UFOP
 
Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014Proposta de Projeto de Pesquisa - CEFET - 2014
Proposta de Projeto de Pesquisa - CEFET - 2014
 
Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.
 
Droid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - GermanyDroid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - Germany
 
Java v1.1
Java v1.1Java v1.1
Java v1.1
 
IMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentationIMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentation
 
AED Lab 01 Sab
AED Lab 01 SabAED Lab 01 Sab
AED Lab 01 Sab
 
Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1Desenvolvimento de Aplicações Móveis em Java - Parte 1
Desenvolvimento de Aplicações Móveis em Java - Parte 1
 
Android Developers Challenge
Android Developers ChallengeAndroid Developers Challenge
Android Developers Challenge
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em Java
 
Computação Ubíqua
Computação UbíquaComputação Ubíqua
Computação Ubíqua
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em Java
 
Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em Java
 
Desenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaMEDesenvolvimento de Aplicações Móveis com JavaME
Desenvolvimento de Aplicações Móveis com JavaME
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Último (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Struts Cap10 DepuraçãO E Log

  • 1. Capítulo 10 Depurando e Usando Log
  • 2.
  • 3.
  • 4. Depuração e Log: JSP String param = getServletConfig(). getInitParameter(“debug”); If (param.equals(“2”)){ System.out.println(“Mensagem debug”); } Web.xml Documento JSP, Servlet <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param>
  • 5.
  • 6.
  • 7. Jakarta Commons Logging (JCL) # exemplo de uso do SimpleLog org.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog # exemplo de uso do log4j # Obs: necessita do arquivo log4j.properties org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JCategoryLog
  • 8.
  • 9.
  • 10.
  • 11.
  • 12. Usando o log4j: Propriedades de um Appender # Criando um anexador: rolling com nível DEBUG log4j.rootLogger =DEBUG, rolling # rolling tem como destino implementação em RollingFileAppender log4j.appender.rolling =org.apache.log4j.RollingFileAppender # Nome do arquivo log4j.appender.rolling.File =saida.log # Tamanho máximo do log log4j.appender.rolling.MaxFileSize =300KB # Número de backups definidos do arquivo log4j.appender.rolling.MaxBackupIndex =1 # Definição da classe e padrão de formatação log4j.appender.rolling.layout =org.apache.log4j.PatternLayout log4j.appender.rolling.layout.ConversionPattern = %d{ABSOLUTE} - %p %c - %m%n 1 2 5 6 7 3 4
  • 13.
  • 14. Usando o log4j: Níveis de logging // get a logger instance named &quot;com.foo&quot; Logger logger = Logger.getLogger(&quot;com.foo&quot;); // Now set its level. Normally you do not need to set the // level of a logger programmatically. This is usually done // in configuration files. logger.setLevel(Level.INFO); Logger barlogger = Logger.getLogger(&quot;com.foo.Bar&quot;); // This request is enabled, because WARN >= INFO. logger.warn(&quot;Low fuel level.&quot;); // This request is disabled, because DEBUG < INFO. logger.debug(&quot;Starting search for nearest gas station.&quot;); // The logger instance barlogger, named &quot;com.foo.Bar&quot;, // will inherit its level from the logger named // &quot;com.foo&quot; Thus, the following request is enabled // because INFO >= INFO. barlogger.info(&quot;Located nearest gas station.&quot;); // This request is disabled, because DEBUG < INFO. barlogger.debug(&quot;Exiting gas station search&quot;);
  • 15.
  • 16. Log4j.properties: Pattern Pattern: &quot;%r [%t] %-5p %c{2} - %m%n&quot; 176 [main] INFO examples.Sort – Populating an array of 2 elements in reverse order r - numero de milissegundos transcorridos desde o inicio do programa t - nome da thread que gerou o evento de log p - prioridade (o -5 indica que deve alinhar a direita se o número de caracteres for menor que cinco) c - nome da classe (2 indica que se o nome completo da classe for &quot;a.b.c&quot; por exemplo, deverá ser mostrado apenas &quot;b.c&quot;) m - é a mensagem (não pode faltar !) n - é o separador de linhas padrão do sistema operacional - &quot;&quot; ou &quot;&quot;
  • 17. Log4j.properties # Criando dois anexadores: stdout e rolling, com nível DEBUG log4j.rootLogger= DEBUG , stdout , rolling # stdout tem como destino o console log4j.appender.stdout =org.apache.log4j.ConsoleAppender # Formato do stdout definido com uso de PatternLayout log4j.appender.stdout.layout =org.apache.log4j.PatternLayout # Definição do padrão para saída log4j.appender.stdout.layout .ConversionPattern = %5p [%t] (%F:%L) - %m%n # rolling tem como destino implementação em RollingFileAppender log4j.appender.rolling =org.apache.log4j.RollingFileAppender # Nome do arquivo log4j.appender.rolling.File =saida.log # Tamanho máximo do log log4j.appender.rolling.MaxFileSize =300KB # Número de backups definidos do arquivo log4j.appender.rolling.MaxBackupIndex =1 # Definição da classe e padrão de formatação log4j.appender.rolling.layout =org.apache.log4j.PatternLayout log4j.appender.rolling.layout.ConversionPattern = %d{ABSOLUTE} - %p %c - %m%n
  • 18. Log4j.properties <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE log4j:configuration PUBLIC &quot;http://logging.apache.org/log4j/docs/api/org/apache/log4j/xml/log4j.dtd&quot;> <log4j:configuration> <appender name=&quot;stdout&quot; class=&quot; org.apache.log4j.ConsoleAppender &quot;> <layout class=&quot; org.apache.log4j.PatternLayout &quot;> <param name=&quot; ConversionPattern &quot; value=&quot;%d{ABSOLUTE} %5p %c{1}:%L - %m%n&quot; /></layout> </appender> <logger name=&quot; org.springframework &quot;> <level value=&quot;info&quot;/> </logger> <logger name=&quot; org.acegisecurity &quot;> <level value=&quot;info&quot;/> </logger> <root> <priority value=&quot; debug &quot; /> <appender-ref ref=&quot; stdout &quot; /> </root> </log4j:configuration>
  • 19. Log4j.properties <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?> <log4j:configuration> <appender name=&quot; trace &quot; class=&quot;org.apache.log4j.FileAppender&quot;> <param name=&quot;file&quot; value=&quot;/trace.log&quot; /> <layout class=&quot;org.apache.log4j.PatternLayout&quot;> <param name=&quot;ConversionPattern“ value=&quot;[%d{ISO8601}] %-5p %c %m %n&quot;/> </layout> <filter class=&quot;org.apache.log4j.varia.LevelRangeFilter&quot;> <param name=&quot;LevelMin&quot; value=&quot;TRACE&quot;/> <param name=&quot;LevelMax&quot; value=&quot;DEBUG&quot;/> </filter> </appender> <appender name=&quot; error &quot; class=&quot;org.apache.log4j.FileAppender&quot;> <param name=&quot;file&quot; value=&quot;/error.log&quot; /> <layout class=&quot;org.apache.log4j.PatternLayout&quot;> <param name=&quot;ConversionPattern“ value=&quot;[%d{ISO8601}] %-5p %c %m %n&quot;/> </layout> <filter class=&quot;org.apache.log4j.varia.LevelRangeFilter&quot;> <param name=&quot;LevelMin&quot; value=&quot;INFO&quot;/> <param name=&quot;LevelMax&quot; value=&quot;FATAL&quot;/> </filter> </appender> <root> <level value=&quot;all&quot; /> <appender-ref ref=&quot;trace&quot;/> <appender-ref ref=&quot;error&quot;/> </root> </log4j:configuration>
  • 20.
  • 21.
  • 22.
  • 24.