Envio de logs por e-mail com a EntLib

Utilizando o Logging Application Block da Enterprise Library, é possível configurar sua aplicação para enviar e-mails em casos de logs específicos. Isso é feito de forma transparente para a aplicação, através dos filtros de log que são definidos no arquivo de configuração. O e-mail é uma forma ativa de log, que não depende de alguém que fique monitorando os logs da aplicação. Mas é importante saber quando deve-se enviar e-mails, para que não sejam geradas muitas mensagem, o que tornaria o monitoramento ineficiente.

Com a EntLib, é possível escolher a maneira de se logar (listener de log) pela severidade e pela categoria dos logs. Em algumas aplicações críticas, pode-se configurar o serviço para enviar um e-mail com detalhes do log em casos de falhas de severidade Critical (a mais severa). Podem ser consideradas críticas as falhas que a aplicação não consegue se recuperar. Os demais logs podem ser armazenados no banco de dados ou arquivos.

Portanto, será enviado um e-mail se em algum trecho do código houver uma chamada de log como no exemplo abaixo:

Logger.Write(string.Format("A critical failure occurred: {0} - Stack: {1}", ex.Message, ex.StackTrace), "Start", 0, 0, TraceEventType.Critical, "AppContext");

Para configurar, é necessário adicionar no arquivo de configuração o listener de e-mail, na seção loggingConfiguration:

    <listeners>
      <add toAddress="alerta@dominio.com.br" fromAddress="aplicacao@dominio.com.br"
        subjectLineStarter="[" subjectLineEnder="] Application Log"
        smtpServer="mail.dominio.com.br" smtpPort="587" formatter="Text Formatter"
        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.EmailTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        traceOutputOptions="None" filter="Critical" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.EmailTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

        name="Email TraceListener" />
        (...)
    </listeners>

Note que na propriedade filter, o valor configurado está Critical. Para adequar o texto do log ao formato do e-mail, definimos um formatter:

    <formatters>
      <add template="Log date (local): {timestamp(local:yyyy-MM-dd HH:mm:ss.fff)}Category: {category}Operation: {title}Server: {machine}Parameters: {dictionary({key}={value};)}Message: {message}"
        type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        name="Text Formatter" />
        (...)
    </formatters>

Se o servidor exiger autenticação, é necessário adicionar as credenciais de acesso no arquivo de configuração, dentro da seção system.net:

  <system.net>
    <mailSettings>
      <smtp from="aplicacao@dominio.com.br">
        <network host="mail.dominio.com.br" port="587" userName="aplicacao" password="123456" />
      </smtp>
    </mailSettings>
  </system.net>
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s