SlideShare ist ein Scribd-Unternehmen logo
1 von 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]

Weitere ähnliche Inhalte

Was ist angesagt?

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 web2pyGilson Filho
 
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 CherryPyantonio sérgio nogueira
 
Androidconf 2011 lecheta
Androidconf 2011 lechetaAndroidconf 2011 lecheta
Androidconf 2011 lechetarlecheta
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
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 Log4perlgarux
 
Timers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOSTimers and Interrupts no FreeRTOS
Timers and Interrupts no FreeRTOSMayara Mônica
 
Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsThiago Cifani
 
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 JavaScriptRaphael Donaire Albino
 
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 PostgreSQLJuliano Atanazio
 
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 ComandoRafael Jaques
 
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 cucumberRafael Berçam
 
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 Comandogarux
 

Was ist angesagt? (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
 

Ähnlich wie Log Depuração

PrincipaiPrincipais Frameworks e Documentação
PrincipaiPrincipais Frameworks e DocumentaçãoPrincipaiPrincipais Frameworks e Documentação
PrincipaiPrincipais Frameworks e Documentaçãoelliando dias
 
Cobertura - Ferramenta para teste de cobertura
Cobertura - Ferramenta para teste de coberturaCobertura - Ferramenta para teste de cobertura
Cobertura - Ferramenta para teste de coberturaWallaceRoque
 
EMMA - Ferramenta para teste de cobertura
EMMA - Ferramenta para teste de coberturaEMMA - Ferramenta para teste de cobertura
EMMA - Ferramenta para teste de coberturaWallaceRoque
 
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 embarcadosEmbarcados
 
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 04Diego Pacheco
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
Apresentacao log
Apresentacao logApresentacao log
Apresentacao logpedrohfsd
 
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 02Diego Pacheco
 
Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGiljefesrodrigues
 
(Portuguese) Java EE Poliglota
(Portuguese) Java EE Poliglota(Portuguese) Java EE Poliglota
(Portuguese) Java EE PoliglotaPhil Calçado
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 

Ähnlich wie Log Depuração (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
 

Mehr von 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 - 2014Waldir 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 UFOPWaldir 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 - 2014Waldir R. Pires Jr
 
Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.Droid Emergency Context Service - Msc.
Droid Emergency Context Service - Msc.Waldir R. Pires Jr
 
Droid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - GermanyDroid Guide Prototype - Dresden - Germany
Droid Guide Prototype - Dresden - GermanyWaldir R. Pires Jr
 
IMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentationIMS IP multimedia subsystem presentation
IMS IP multimedia subsystem presentationWaldir 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 1Waldir R. Pires Jr
 
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 JavaWaldir R. Pires Jr
 
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 JavaWaldir R. Pires Jr
 
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 JavaWaldir 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 JavaMEWaldir R. Pires Jr
 

Mehr von 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
 

Log Depuração

  • 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.