Configurando Fluent NHibernate com Log4NET

Vamos dar sequência em nossa série sobre Fluent NHibernate

  1. Começando com Fluent NHibernate
  2. Mapeamentos com Fluent NHibernate
  3. Usando o Fluent NHibernate
  4. Gerando arquivos HBM
  5. Gerar arquivo SQL do mapeamento
  6. Configurando Log4NET
  7. Como funciona o Lazy Load

Quando estamos trabalhando com o Fluent NHibernate muitas vezes precisamos saber o que está acontecendo por “detrás dos panos” e uma das opções nesse caso é configurar o log usando o framework Log4Net

1) Instalação

Primeiro de tudo temos que adicionar a referência do Log4Net em nossa aplicação, vamos usar o NuGet para adicionar essa referência, basta abrir o Package Manager Console (View -> Other Windows -> Package Manager Console) e digitar a linha de comando Install-Package log4net conforme abaixo:

2) Configuração

Depois de instalado temos que configurar, para isso abra o arquivo de configuração (web.config, app.config) e adicione as seguintes linhas

[sourcecode language=”xml”]
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!– Others sections –>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>

<!– This section contains the log4net configuration settings –>
<log4net debug="false">

<!– Define some output appenders –>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender, log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p %c{1}:%L – %m%n" />
</layout>
</appender>

<appender name="FileAppender" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="log.txt" />
<param name="AppendToFile" value="false" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy.MM.dd" />
<param name="StaticLogFileName" value="true" />

<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c – %m%n" />
</layout>
</appender>

<!– Setup the root category, add the appenders and set the default priority –>
<root>
<priority value="DEBUG" />
<appender-ref ref="TraceAppender" />
<appender-ref ref="FileAppender" />
</root>

</log4net>

</configuration>
[/sourcecode]

Quando executamos nossa aplicação podemos ver o log na janela de debug do Visual Studio

Também é gerado um arquivo de log

Podemos perceber que esse log está todos os eventos do NHibernate, agora podemos configurar outra seção para fazer log apenas das SQLs que estão sendo executadas no banco, veja abaixo

[sourcecode language=”xml”]
<!– Setup the root category, add the appenders and set the default priority –>
<root>
<priority value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>

<logger name="NHibernate.SQL">
<level value="DEBUG" />
<appender-ref ref="TraceAppender" />
</logger>
[/sourcecode]

O código fonte dessa aplicação está em http://fluentnhibernate.codeplex.com

Deixe seu comentário, opinião, critica

Aquele abraço!

Sobre Leandro Prado

Leandro Silveira Prado é Premier Field Engineer na Microsoft especializado em Application Lifecycle Management.