C# 5.0 – Gerando Log utilizando Caller Info Attributes

Desenvolver software saudável é uma arte, atualmente temos visto muito software de qualidade no mercado, porém quando existe qualquer implementação evolutiva o software começa a desencadear uma série de bugs, por essa razão conceitualmente existe uma diferença entre software saudável e software de qualidade, software saudável em curtas palavras é o software que é evoluído com facilidade e não gera bugs.

Existem várias classes de bugs, alteração de infraestrutura, sintaxe, lógica de implementação entre outros, porém o pior de todos é aquele bug silencioso, pois ele acontece apenas no ambiente de produção e você não consegue entender a causa do erro e onde o erro acontece, por esse motivo a implementação de Log é muito importante porque fornece aos desenvolvedores a rastreabilidade necessária para descobrir o que esta gerando erro, e a novo recurso Caller Infor Attributes disponibilizado no C# 5.0 nos ajuda com essa questão. 


Vamos implementar um exemplo bem simples para entendermos o conceito, vale lembrar que estamos sendo puristas tratando log de erro apenas com C#, não estamos utilizando nenhum componente orientado a aspecto que existe no mercado.

Na versão do C# 4.0 foi disponibilizada uma feature bem legal que já existia em outras linguagens o Named e Optional Arguments, usando dessa feature os arquitetos da Microsoft tiveram a idéia de adicionar atributos para parâmetros opcionais que representassem o método, arquivo e linha que o erro ocorreu.


Como podemos observar a Solução do Projeto é bem simples 

 


Interface nos fornece um comportamento chamado Error que será implementado pela classe Logger


Classe Logger implementa o comportamento da interface ILog, fornece uma instancia para classes externas acessarem o método Error.


Agora iremos chamar esse comportamento de uma classe cliente, no nosso caso do Main.

Resultado :

Como podemos notar é retornado a descrição do erro, método, arquivo e linha que o erro ocorreu, com essas informações em mãos bastaria persistir esses dados em uma base de dados e implementar uma rotina para enviar notificações via email sobre os erros que estão acontecendo no ambiente de produção.

Vantagem

A sintaxe é clara e objetiva, oferece uma maneira de trabalhar com Log de erro de uma forma customizada não excedendo. Os componentes de terceiros existentes no mercado orientado a aspecto oferecem muito mais do que é realmente necessário, muita das vezes gerando arquivos xml enormes, além da lógica interna desses componentes ser altamente complexas uma vez que é realizado um scan do assembly depois que o C# compiler converteu esse assembly para IL e posteriormente é reescrito o IL.
Então Caller Info Attributes fica como uma alternativa mais limpa e customizada. 

Para saber mais 

Aprofunde seu conhecimento sobre C#

Artigo sobre Named e Optional Arguments MSDN 

Caso de Uso de Named e Optional Arguments

C# 4.0 - Named e Optional Arguments 

C# 5.0 - Caller Info Attributes

Exibições: 600

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

Comentário de Wellington Nascimento em 1 março 2016 às 13:41

Parabéns pelo artigo, realmente esse recurso é muito legal. Já usei ele em um logger que fiz recentemente e realmente ajuda bastante. Abraços!

© 2017   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço