Existem diversas maneiras de se criar logs em C#, uma delas é com o Log4net da Apache, que vou demonstrar neste post.
Vou apenas esboçar como utilizar, não vou me aprofundar muito, pois existem diversos posts na internet sobre o assunto, que depois vou mostrar alguns links interessantes, minha intenção é apenas mostrar como funciona deixando o encargo de se aprofundar no assunto por conta dos leitores.
Bem, primeiro baixe os arquivos do Log4net em http://logging.apache.org/log4net/download.html, após o download extraia os arquivos, dentro da pasta contém os arquivos fontes do Log4net, exemplos, documentação e as dlls para as diferentes linguagens que ele suporta.
Vamos criar um projeto no Visual Studio “File > New Project”, e vamos adicionar a referencia a DLL do Log4net que esta no diretório (Log4Net/Bin/net/2.0/release/log4net.dll), clique com o direito em References > add references > Browse > aponte para a DLL Log4net.dll e clique em ok
Agora basta criar um arquivo de configuração “clique com o direito no projeto > add > new item > e de o nome de log4net.config”, aqui vamos colocar as configurações do Log4net, mas se você quiser pode por as configurações no Web.config mesmo, eu separei para poder ficar mais organizado.
Vamos a configuração, do log4net.config, coloque :
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="file1.log"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date - %-5level - %message%newline"/>
</layout>
</appender>
<logger name="LogInFile1">
<level value="All"/>
<appender-ref ref="LogFileAppender"/>
</logger>
</log4net>
A tag “appender” contem as configurações do log, onde será gravado o log, em arquivo texto, banco de dados, enviado por e-mail entre outras formas.
A tag “param” definimos o diretório do arquivo e o nome dele.
A tag “layout” você define como será o formato do seu log, no caso definimos que o log vai ter o formato “data – level – mensagem”.
A tag “logger” define em que nível o log será executado, se em debug, warning, info entre outros, no caso definimos para todos.
E a tag “appender-ref “ aponta para qual configuração de log “appender” ele deve executar no caso para “LogFileAppender” que foi o nome que coloquei para o appender.
Agora vamos chamar o log no cs:
protected void Page_Load(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Server.MapPath("log4net.config")));
log = log4net.LogManager.GetLogger("LogInFile1");
log.Info("Fulano clicou no botao");
}
A linha 3 apenas carrega as configurações do Log4net, sempre que for um usar as chamadas de log você deve carregar as configurações , para não ficar sempre carregando você pode definir esta chamada no Application_Start do Global.asax por exemplo.
A linha 4 estou referenciando o logger que quero chamar. E a linha 5 escrevemos a mensagem que queremos gravar no log e qual nível do log (Info, Fatal, Error, Debug, Warn, etc.).
Pronto agora basta rodar e ver o arquivo de log gerado.
Claro que este é apenas a forma mais básica de log do Log4net, existem varias opções a serem exploradas, recomendo a leitura da documentação.
Segue links interessantes para quem quer se aprofundar mais no Log4net:
Site Oficial:
http://logging.apache.org/log4net/
SDK Reference
http://logging.apache.org/log4net/release/sdk/index.html
Vídeo interessante em inglês:
http://www.dimecasts.net/Casts/CastDetails/45
Mátria bem detalhada sobre o Log4net em inglês: