Log4net

1,635 views
1,524 views

Published on

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
1,635
On SlideShare
0
From Embeds
0
Number of Embeds
62
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Log4net

  1. 1. Log4Net Sérgio Agostinho  sagostinho@viatecla.pt www.viatecla.com 12Fev09  ViaTecla Software Conceitos básicos e extensões
  2. 2. Agenda <ul><li>Motivação </li></ul><ul><ul><li>Porquê logging ? </li></ul></ul><ul><ul><li>Como fazer logging ? </li></ul></ul><ul><li>Conceitos básicos </li></ul><ul><ul><li>Níveis de logging </li></ul></ul><ul><ul><li>Código C# </li></ul></ul><ul><ul><li>Appenders : como registar </li></ul></ul><ul><ul><li>Layouts : o que registar </li></ul></ul><ul><ul><li>Exemplos de configuração via XML </li></ul></ul><ul><li>Extensões </li></ul><ul><ul><li>Caso prático: site errors à lá VT </li></ul></ul><ul><ul><li>Tecnologias de legado: classic ASP </li></ul></ul><ul><li>Outras considerações </li></ul><ul><ul><li>Desempenho </li></ul></ul><ul><ul><li>O que há mais? </li></ul></ul><ul><ul><li>Mais Informações </li></ul></ul><ul><li>Feedback </li></ul><ul><ul><li>A vossa experiência </li></ul></ul>
  3. 3. <ul><li>Detecção e correcção de erros </li></ul><ul><ul><li>Depois de deployed o site/aplicação está fora da nossa máquina... </li></ul></ul><ul><li>Segurança </li></ul><ul><ul><li>Queremos saber quem fez o quê e como </li></ul></ul><ul><li>Recolha de dados </li></ul><ul><ul><li>Para fazer estatísticas de utilização </li></ul></ul>Porquê logging ?
  4. 4. <ul><li>Console.WriteLine() </li></ul><ul><ul><li>Testes específicos </li></ul></ul><ul><li>Email.Send() </li></ul><ul><ul><li>Site errors para feedback imediato </li></ul></ul><ul><li>Windows System Event Log </li></ul><ul><ul><li>Framework com persistência </li></ul></ul><ul><li>My Mega Logger Class </li></ul><ul><ul><li>Comportamento à medida </li></ul></ul><ul><li>Log4Net </li></ul><ul><ul><li>Logging básico completo out of the box </li></ul></ul><ul><ul><li>A maior parte da complexidade está na configuração e não no código </li></ul></ul><ul><ul><li>Framework open-source e extensível </li></ul></ul>Como fazer logging ?
  5. 5. <ul><li>Debug </li></ul><ul><ul><li>Outputs para fases de testes </li></ul></ul><ul><li>Info </li></ul><ul><ul><li>Informação útil (ex: inicialização, compra concluída com sucesso, etc.) </li></ul></ul><ul><li>Warn </li></ul><ul><ul><li>Situação anormal que embora não seja impeditiva, pode vir a ser problemática... (ex: verificação de consistência) </li></ul></ul><ul><li>Error </li></ul><ul><ul><li>Algo correu mal e impediu que uma operação fosse concluída com sucesso (ex: parâmetros em falta, chamada ao Scriptor falhou...) </li></ul></ul><ul><li>Fatal </li></ul><ul><ul><li>Algo correu muito mal e a própria interface com o utilizador não pode ser vista (ex: excepção de topo não tratada, algo que envolva €€€!) </li></ul></ul>Níveis de logging
  6. 6. Código C# // inicialização via app/web.config: XmlConfigurator.Configure(); ILog logger = LogManager.GetLogger(typeof(MyClass)); // inicialização via xml externo: FileInfo file = new FileInfo(“myapp.xml”); XmlConfigurator.Configure(file); ILog logger = LogManager.GetLogger(typeof(MyClass)); // utilização: string message; Exception e; logger.Debug(e); logger.Debug(message, e); // ... logger.Info(e); // ... logger.Warn(e); // ... logger.Error(e); // ... logger.Fatal(e); // ...
  7. 7. <ul><li>AdoNetAppender </li></ul><ul><li>AnsiColorTerminalAppender </li></ul><ul><li>AspNetTraceAppender </li></ul><ul><li>ColoredConsoleAppender </li></ul><ul><li>ConsoleAppender </li></ul><ul><li>EventLogAppender </li></ul><ul><li>FileAppender </li></ul><ul><li>LocalSyslogAppender </li></ul><ul><li>MemoryAppender </li></ul>Appenders : como registar <ul><li>NetSendAppender </li></ul><ul><li>OutputDebugStringAppender </li></ul><ul><li>RemoteSyslogAppender </li></ul><ul><li>RemotingAppender </li></ul><ul><li>RollingFileAppender </li></ul><ul><li>SmtpAppender </li></ul><ul><li>TelnetAppender </li></ul><ul><li>TraceAppender </li></ul><ul><li>UdpAppender </li></ul>
  8. 8. <ul><li>ExceptionLayout </li></ul><ul><li>PatternLayout </li></ul><ul><li>RawTimeStampLayout </li></ul><ul><li>RawUtcTimeStampLayout </li></ul><ul><li>SimpleLayout </li></ul><ul><li>XmlLayout </li></ul><ul><li>XmlLayoutSchemaLog4j </li></ul>Layouts : o que registar
  9. 9. <ul><li>O que é preciso? </li></ul><ul><ul><li>Declaração de uma secção log4net (só para app/web.config) </li></ul></ul><ul><ul><li>Nessa secção preencher a secção appenders e root </li></ul></ul><ul><li>Exemplos </li></ul><ul><ul><li>FileAppender (Windows Forms) </li></ul></ul><ul><ul><li>Múltiplos RollingFileAppender (ASP.NET) </li></ul></ul><ul><ul><li>RollingFileAppender + SmtpAppender com diferentes níveis (ASP.NET) </li></ul></ul>Configuração via XML
  10. 10. <ul><li>Desafio </li></ul><ul><ul><li>Site errors na VT não são feitos via Log4Net, devido a requisitos específicos (contexto Web e visualização) </li></ul></ul><ul><li>Solução </li></ul><ul><ul><li>Estender o Log4Net com classes appender e layout personalizadas. </li></ul></ul>Caso prático: site errors à lá VT (I)
  11. 11. <ul><li>VTSmtpAppender </li></ul><ul><ul><li>Estende a classe SmtpAppender </li></ul></ul><ul><ul><li>Redefine o método SendEmail </li></ul></ul><ul><li>VTEmailLayout </li></ul><ul><ul><li>Estende a classe LayoutSkeleton </li></ul></ul><ul><ul><li>Redefine o método Format </li></ul></ul>Caso prático: site errors à lá VT (II)
  12. 12. <ul><li>Desafio </li></ul><ul><ul><li>Como usar Log4Net em sites ASP clássicos? </li></ul></ul><ul><li>Solução </li></ul><ul><ul><li>Fazer uma biblioteca .NET wrapper do Log4Net e compilá-la em modo de compatibilidade COM. </li></ul></ul><ul><ul><li>É preciso um novo appender pela ausência de contexto HTTP. </li></ul></ul><ul><ul><li>Não há Web.config. </li></ul></ul>Tecnologias legado: classic ASP (I)
  13. 13. <ul><li>AspSmtpAppender </li></ul><ul><ul><li>Estende a classe SmtpAppender </li></ul></ul><ul><ul><li>Redefine o método SendEmail </li></ul></ul><ul><ul><li>Não usa o HttpContext </li></ul></ul><ul><li>Instruções </li></ul><ul><ul><li>Ver ficheiros em anexo </li></ul></ul>Tecnologias legado: classic ASP (II)
  14. 14. <ul><li>Arquitectura e loggers built-in </li></ul><ul><ul><li>O mais simples, portáveis e leves possíveis </li></ul></ul><ul><li>Excepções dentro dos loggers </li></ul><ul><ul><li>Não são propagadas (mas vísiveis no output do Visual Studio) </li></ul></ul><ul><li>Controlo fino de desempenho </li></ul><ul><ul><li>A interface ILog disponibiliza flags para tal ( IsDebugEnabled , IsInfoEnabled , etc) </li></ul></ul><ul><li>Layouts </li></ul><ul><ul><li>O uso de certas opções do PatternLayout usa mecanismos de reflexão (nome do método, nome da classe, etc)! </li></ul></ul><ul><li>Estensões </li></ul><ul><ul><li>A bola está do nosso lado... </li></ul></ul>Desempenho
  15. 15. <ul><li>Os restantes Appenders , Layouts e respectivas propriedades </li></ul><ul><li>Filters e Object Renderers </li></ul><ul><li>Configuração via API </li></ul><ul><li>Hierarchical Logging </li></ul><ul><li>Logging Repositories </li></ul><ul><li>Log4Net para .NET 1.0, .NET 1.1, Compact Framework , Mono ... </li></ul>O que há mais para ver
  16. 16. <ul><li>Log4Net (sítio oficial do Apache) </li></ul><ul><ul><li>http://logging.apache.org/log4net/ </li></ul></ul><ul><li>Log4Net Overview (manual intermédio) </li></ul><ul><ul><li>http://www.recneps.co.uk/downloads/log4NetOverview.pdf </li></ul></ul><ul><li>Ficheiros em anexo </li></ul><ul><ul><li>http://sharepoint.viatecla.pt/devvt/Lists/Sessoes/DispForm.aspx?ID=38 </li></ul></ul>Mais informações
  17. 17. www.viatecla.com | (+351) 212 723 500 Obrigado pela vossa atenção!

×