Desenvolvimento - ASP. NET

Log4Net em páginas ASP.NET

Artigo que demonstra como utilizar o framework Log4Net, para realizar log´s em aplicativos Web. Padronizando e dinamizando a geração dos log´s nesse tipo de aplicativo.

por Rafael Sussel Decleva



Ao comentar com uns camaradas meus, que trabalham com Java, a respeito de uma biblioteca que eu estava implementando para realizar Log´s nos sistemas .Net (c#) desenvolvidos na empresa em que eu trabalho, eles comentaram a respeito do Log4J explicando suas funcionalidades e particularidades, resolvi ler alguma coisa a respeito do mesmo, e qual foi minha surpresa: Ele também foi implementado para .Net, com o nome de Log4Net.

Logo resolvi colocar a mão na massa e realizar alguns testes com esse framework, abaixo segue um pequeno tutorial demonstrando como utilizá-lo em aplicações Asp.Net.

Ambiente de desenvolvimento

Estou utilizando como ambiente de desenvolvimento o Visual Studio 2005 em conjunto com o .Net Framework 2.0.

E claro, é necessário realizar o download do Log4Net no site http://logging.apache.org/log4net/.

Começando...

Antes de mais nada é necessário criar um novo projeto web no VS 2005 (FileàNewàWeb Site).

Obs.: O nome dado ao projeto foi de WebLog4NetTest

Agora devemos adicionar o Log4Net como referência no nosso projeto (WebsiteàAdd Reference).

Ao realizar o download na do Log4Net no site Apache.org, virá um arquivo que ao descompactá-lo haverá diversas pastas, dentre as quais, haverá uma com o nome de “bin” e dentro dela outra pasta com o nome de “net” onde haverá diversas páginas contendo o framework Log4Net para diversas versões do .Net Framework.

Com a referência já adicionada devemos agora adicionar um novo item (FileàNewàFile) no nosso projeto, o Global Application Class (arquivo Global.asax).

No arquivo Global.asax teremos que informar ao framework que novas diretivas de configuração serão incluídas no web.config da aplicação, para isto no método Application Start, devemos adicionar a seguinte chamada “log4net.Config.XmlConfigurator.Configure();” , logo o arquivo ficaria igual a esse:

<%@ Application Language="C#" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e)

    {

        // Code that runs on application startup

        log4net.Config.XmlConfigurator.Configure();

    }

   

    void Application_End(object sender, EventArgs e)

    {

        //  Code that runs on application shutdown

    }

.

.

.

Pronto agora vamos configurar o arquivo web.config de nossa aplicação, para indicarmos como e onde serão salvos os log´s gerados pelo Log4Net

Como por padrão o arquivo web.config não vem incluso no projeto, devemos adicioná-lo (FileàNewàFile).

Agora devemos editá-lo e incluir as “Tag´s” referentes às configurações do Log4Net.

Veja abaixo como ficou o arquivo web.config já configurado para salvar os log´s gerados pela aplicação em um arquivo.

<?xml version="1.0"?>

<configuration>

 

  <!-- Log4Net Início -->

  <configSections>

    <section  name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

  </configSections>

  <log4net>

      <!—-Existem diversos tipos de appender´s e diversas maneiras de configurá-los, um único projeto pode haver N appender´s -->

    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">

      <!--Caminho onde o arquivo será gerado -->

      <param name="File" value="AppLogs\\LogsAppp.log"/>

      <layout type="log4net.Layout.PatternLayout">

        <!--o que será incluido no arquivo -->

        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>

      </layout>

    </appender>

    <logger name="LogInFile">

      <!—O nivel de log que será incluido no appender -->

      <level value="All" />

      <!--Utilizando qual appender -->

      <appender-ref ref="LogFileAppender" />

    </logger>

  </log4net>

 

  <!-- Log4Net Fim -->

 

    <appSettings/>

    <connectionStrings/>

    <system.web>

        <compilation debug="false" />

        <authentication mode="Windows" />

    </system.web>

</configuration>

Há alguns pontos importantes hão serem explicados sobre as configurações do Log4Net, as configurações aplicadas acima apesar de funcionarem corretamente ao nosso propósito podem ser incrementadas visto que o Log4Net dá a possibilidade de armazenar os log´s do sistema de diversas maneiras, tais como banco de dados, arquivos, e-mail, dentre outras.

Veja no link http://logging.apache.org/log4net/release/config-examples.html alguns exemplos configurações para os diversos tipos de armazenamento de log (appender´s).

Mesmo no esquema para armazenar os log´s em arquivo, existem diversas maneiras de gerenciar esses arquivos, podendo estipular, por exemplo, um tamanho máximo que esse arquivo possa atingir, e toda vez que este tamanho for atingido automaticamente será criado um novo arquivo.

A aplicação

Com a aplicação já configurada para utilizar o Log4Net, vamos à implementação da mesma, para vermos o framework Log4Net em atividade.

No código da página Default.aspx, vamos fazer as chamadas ao Log4Net para que assim possa ser armazenado os log´s.

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page

{

    private log4net.ILog logger;

    protected void Page_Load(object sender, EventArgs e)

    {

        logger = log4net.LogManager.GetLogger("LogInFile");

        logger.Debug("Log no nivel de debug");

        logger.Info("Log no nivel de info");

        logger.Error("Log no nivel de error");

        logger.Warn("Log no nivel de warning");

    }

}

Note que existe diversos níveis de log´s possível, com isto é possível com uma única mudança em nosso web.config informar qual/quais nível será armazenado no nosso arquivo de log.

Da maneira como está confiurado todos serão armazenados, com isto ao executar a aplicação será criada uma pasta com o nome de AppLogs e dentro da mesma o arquivo LogsApp.txt, assim como configurado no web.config.

Veja abaixo o que foi armazenado nele:

Caso desejássemos armazenar somente os log´s de erros emitidos pela nossa aplicação bastaríamos alterar nosso web.config.

Onde está:

            <logger name="LogInFile">

                  <!--O que será logado -->

                  <level value="All"/>

                  <!--Utilizando qual appender -->

                  <appender-ref ref="LogFileAppender"/>

            </logger>

Vamos altera para:

           

            <logger name="LogInFile">

                  <!--O que será logado -->

                  <level value="Error"/>

                  <!--Utilizando qual appender -->

                  <appender-ref ref="LogFileAppender"/>

            </logger>

Como resultado, ao executar novamente nossa aplicação teríamos apenas uma nova entrada no arquivo de log, já que o Log4Net irá considerar apenas os log´s de erro (error).

Concluindo

Como já dito acima existe diversas maneira de configurar o Log4Net, com certeza a que nós utilizamos foi uma das mais simples, mas nada que uma boa olhada na documentação existente no site http://logging.apache.org/log4net/index.html não possa tornar seus log´s o mais dinâmico e especifico para sua aplicação.

Um forte abraço a todos espero ter ajudado.

Rafael Sussel Decleva

Rafael Sussel Decleva - Formação Bacharel em Ciência da Computação
Pós graduado em Sistemas Distribuídos
Analista Desenvolvedor
Siemens - Campinas