Your SlideShare is downloading. ×
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Logging e depuração enterprise-level com Log4perl
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Logging e depuração enterprise-level com Log4perl

905

Published on

Voltado para desenvolvedores de aplicativos robustos e de qualidade corporativa em Perl, o Log4perl oferece uma solução eficiente e elegante para logging, possui diversos appenders e pode ser …

Voltado para desenvolvedores de aplicativos robustos e de qualidade corporativa em Perl, o Log4perl oferece uma solução eficiente e elegante para logging, possui diversos appenders e pode ser integrado de forma transparente a frameworks web, até mesmo a aplicações em Java!

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
905
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Enterprise-level Logging com Log4perl Breno G. de Oliveira <garu@cpan.org>
  • 2. O que pode dar errado?
  • 3. Tudo.
  • 4. O que pode dar errado? Dados externos Configurações Sistema de arquivos Estados inconsistentes Casos especiais ou extremos
  • 5. Apagar incêndio é pra bombeiro.
  • 6. Logging debugging tradicional Chamadas ao “print” espalhadas Chamadas “warn” espalhadas Dump de estruturas de dados (Data::Dumper) Rastreamento (“trace”) manual perl -d
  • 7. Problemas com o debugging tradicional ● Reativo ● Custoso ● Não escala bem
  • 8. Logging tradicional sub debug {       print “@_n”; } ... debug( “cheguei até aqui” );
  • 9. Problemas com o logging tradicional ● Reativo ● Custoso ● Não escala bem
  • 10. E agora? ● Fazemos o nosso... ● ...não!
  • 11. TIMTOWTDI BCINABT ● There is More Than One Way To Do It... ● ...But Consistency Is Not A Bad Thing
  • 12. Log::Log4perl ● Implementação do Log4j para Perl ● Controle do número de mensagens, por log level e componentes ● Definição dinâmica do alvo das mensagens (appenders) ● Formatação de mensagens ● Configuração externa
  • 13. Log levels TRACE DEBUG INFO WARN ERROR FATAL
  • 14. Modo Simples use Log::Log4perl qw(:easy); Log::Log4perl­>easy_init( $INFO ); DEBUG “Isso nao eh exibido”; INFO “Mas isso eh o/”; ERROR “E isso tambem!”;
  • 15. Modo Avançado: Inicialização use Log::Log4perl; Log::Log4perl­>init( 'log.conf' ); Log::Log4perl­>init_once( 'log.conf' ); Log::Log4perl­>init_and_watch( 'log.conf', 10 );
  • 16. Usando package Foo::Bar; use Log::Log4perl; my $logger = Log::Log4perl­>get_logger; $logger­>debug( “Going once...” ); package Foo::Baz; use Log::Log4perl; my $logger = Log::Log4perl­>get_logger(“X”); $logger­>error( “D'oh!” );
  • 17. Arquivos de Configuração # nivel e alvos, por componentes log4perl.logger = ERROR, Arq, Tela log4perl.logger.Foo.Bar = FATAL, Arq, Tela # log em arquivos log4perl.appender.Arq = Log::Log4perl::Appender::File log4perl.appender.Arq.filename=file.log log4perl.appender.Arq.mode = append log4perl.appender.Arq.layout=     Log::Log4perl::Layout::SimpleLayout # log na tela log4perl.appender.Tela = Log::Log4perl::Appender::Screen; log4perl.appender.Tela.layout=     Log::Log4perl::Layout::PatternLayout log4perl.appender.layout.ConversionPattern = [%d] %m %n
  • 18. Appenders Log::Dispatch::ApacheLog Log::Dispatch::DBI Log::Dispatch::Email Log::Dispatch::Email::MailSend Log::Dispatch::Email::MailSendmail Log::Dispatch::Email::MIMELite Log::Dispatch::File Log::Dispatch::FileRotate Log::Dispatch::Handle Log::Dispatch::Screen Log::Dispatch::Syslog Log::Dispatch::Tk Log::Dispatch::SNMP ...
  • 19. Conversion Patterns %c     Categoria do evento de logging %m     Mensagem de log %n     Quebra de linha %C     Nome do pacote (ou classe) totalmente qualificado %F     Arquivo onde o evento de logging ocorreu %d     Data atual em yyyy/MM/dd hh:mm:ss %H     nome do host %l     Nome do método invocante, do arquivo e número        da linha entre parênteses. %r     Número de milisegundos passados do início do         programa ao evento de log. (e muito mais)
  • 20. Outras Opções if ( $logger­>is_debug ) {    foreach my $elemento (@lista_enorme) {        $logger­>debug( $elemento ); } open my $fh, '<', $filename or $logger­>logdie( “$filename: $!” );
  • 21. Um arquivo de configuração diferente... ... ou nem tanto log4j.rootLogger=debug, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) ­ %m%n log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=example.log log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %c ­ %m%n
  • 22. Obrigado! Dúvidas?

×