<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Felice Pollano Blog - log4net</title>
    <link>http://www.felicepollano.com/</link>
    <description>The official Fatica Labs Blog!</description>
    <language>en-us</language>
    <copyright>Felice Pollano</copyright>
    <lastBuildDate>Sat, 04 Dec 2010 06:04:53 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>felice@felicepollano.com</managingEditor>
    <webMaster>felice@felicepollano.com</webMaster>
    <item>
      <trackback:ping>http://www.felicepollano.com/Trackback.aspx?guid=c5152dd4-5979-4706-885c-231e42f22afd</trackback:ping>
      <pingback:server>http://www.felicepollano.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.felicepollano.com/PermaLink.aspx?guid=c5152dd4-5979-4706-885c-231e42f22afd</pingback:target>
      <dc:creator>Felice Pollano</dc:creator>
      <wfw:comment>http://www.felicepollano.com/CommentView.aspx?guid=c5152dd4-5979-4706-885c-231e42f22afd</wfw:comment>
      <wfw:commentRss>http://www.felicepollano.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c5152dd4-5979-4706-885c-231e42f22afd</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ho appreso da un mio collega l’esistenza del comando unix/linux tail, che com il flag
–f monitora costantemente un file e scrive a console le nuove linee aggiunte. Questo
è ottimo se si sta seguendo realtime un log su file. L’unico problema di questa soluzione
è che – almeno nell ‘ implementazione che abbiamo usato-  usando il RollingFileAppender
di log4net il file rimaneva locked, e durante la rinomina automatica falliva e si
rischiava di perdere comopletamente un segmento di log. 
</p>
        <p>
A tale scopo ho scritto una piccola utility C# che fa esattamente la stessa cosa di
tail –f, che troavate su <a href="http://www.codeplex.com">codeplex</a><a href="http://tailf.codeplex.com">a
questo indirizzo</a>. 
</p>
        <p>
Una breve descrizione della command line:
</p>
        <p>
 
</p>
        <ul>
          <li>
            <b>tailf mylog.txt</b> continuously dump on the console the content of <b>mylog.txt</b> as
soon new lines are written into it. 
</li>
          <li>
            <b>tailf -n:15 mylog.txt</b> continuously dump on the console the content of <b>mylog.txt</b> as
soon new lines are written into it. At startup the last <b>15</b> lines are dumped. 
</li>
          <li>
            <b>tailf mylog.txt -f:ERROR</b> continuously dump on the console the content of <b>mylog.txt</b> as
soon new lines are written into it. Just lines containing <b>"ERROR"</b> are shown. 
</li>
          <li>
            <b>tailf mylog.txt -f:"ERROR|WARN"</b> continuously dump on the console the content
of <b>mylog.txt</b> as soon new lines are written into it. Just lines containing <b>"ERROR"</b> or <b>"WARN"</b> are
shown; double quotes are necessary since | is a special char in the command shell.</li>
        </ul>
Per avere invece al volo un idea di come usare il codice per altri scopi date <a href="http://www.codeproject.com/Tips/133346/A-csharp-implementation-of-the-Tail-f-command.aspx">un’
occhiata qui</a>. <img width="0" height="0" src="http://www.felicepollano.com/aggbug.ashx?id=c5152dd4-5979-4706-885c-231e42f22afd" /></body>
      <title>Log4net: Monitorare a console un file</title>
      <guid isPermaLink="false">http://www.felicepollano.com/PermaLink.aspx?guid=c5152dd4-5979-4706-885c-231e42f22afd</guid>
      <link>http://www.felicepollano.com/2010/12/04/Log4netMonitorareAConsoleUnFile.aspx</link>
      <pubDate>Sat, 04 Dec 2010 06:04:53 GMT</pubDate>
      <description>&lt;p&gt;
Ho appreso da un mio collega l’esistenza del comando unix/linux tail, che com il flag
–f monitora costantemente un file e scrive a console le nuove linee aggiunte. Questo
è ottimo se si sta seguendo realtime un log su file. L’unico problema di questa soluzione
è che – almeno nell ‘ implementazione che abbiamo usato-&amp;nbsp; usando il RollingFileAppender
di log4net il file rimaneva locked, e durante la rinomina automatica falliva e si
rischiava di perdere comopletamente un segmento di log. 
&lt;/p&gt;
&lt;p&gt;
A tale scopo ho scritto una piccola utility C# che fa esattamente la stessa cosa di
tail –f, che troavate su &lt;a href="http://www.codeplex.com"&gt;codeplex&lt;/a&gt; &lt;a href="http://tailf.codeplex.com"&gt;a
questo indirizzo&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Una breve descrizione della command line:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;tailf mylog.txt&lt;/b&gt; continuously dump on the console the content of &lt;b&gt;mylog.txt&lt;/b&gt; as
soon new lines are written into it. 
&lt;li&gt;
&lt;b&gt;tailf -n:15 mylog.txt&lt;/b&gt; continuously dump on the console the content of &lt;b&gt;mylog.txt&lt;/b&gt; as
soon new lines are written into it. At startup the last &lt;b&gt;15&lt;/b&gt; lines are dumped. 
&lt;li&gt;
&lt;b&gt;tailf mylog.txt -f:ERROR&lt;/b&gt; continuously dump on the console the content of &lt;b&gt;mylog.txt&lt;/b&gt; as
soon new lines are written into it. Just lines containing &lt;b&gt;"ERROR"&lt;/b&gt; are shown. 
&lt;li&gt;
&lt;b&gt;tailf mylog.txt -f:"ERROR|WARN"&lt;/b&gt; continuously dump on the console the content
of &lt;b&gt;mylog.txt&lt;/b&gt; as soon new lines are written into it. Just lines containing &lt;b&gt;"ERROR"&lt;/b&gt; or &lt;b&gt;"WARN"&lt;/b&gt; are
shown; double quotes are necessary since | is a special char in the command shell.&lt;/li&gt;
&lt;/ul&gt;
Per avere invece al volo un idea di come usare il codice per altri scopi date &lt;a href="http://www.codeproject.com/Tips/133346/A-csharp-implementation-of-the-Tail-f-command.aspx"&gt;un’
occhiata qui&lt;/a&gt;. &lt;img width="0" height="0" src="http://www.felicepollano.com/aggbug.ashx?id=c5152dd4-5979-4706-885c-231e42f22afd" /&gt;</description>
      <comments>http://www.felicepollano.com/CommentView.aspx?guid=c5152dd4-5979-4706-885c-231e42f22afd</comments>
      <category>log4net</category>
    </item>
    <item>
      <trackback:ping>http://www.felicepollano.com/Trackback.aspx?guid=58710c0c-064c-438b-949c-fe6ba88be1e8</trackback:ping>
      <pingback:server>http://www.felicepollano.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.felicepollano.com/PermaLink.aspx?guid=58710c0c-064c-438b-949c-fe6ba88be1e8</pingback:target>
      <dc:creator>Felice Pollano</dc:creator>
      <wfw:comment>http://www.felicepollano.com/CommentView.aspx?guid=58710c0c-064c-438b-949c-fe6ba88be1e8</wfw:comment>
      <wfw:commentRss>http://www.felicepollano.com/SyndicationService.asmx/GetEntryCommentsRss?guid=58710c0c-064c-438b-949c-fe6ba88be1e8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p align="justify">
A volte si vuole ottenere l amedesima configurazione di logging per log con diverso
nome, accomunati da una radice: xEs se usiamo NHibernate avremo NHibernate.Cfg.XmlHbmBinding,NHibernate.Cfg.Configuration,
NHibernate.Cfg.SettingsFactory, NHibernate.Dialect.Dialect … e via discorrendo. E’
bello sapere che <a href="http://logging.apache.org/log4net/index.html" target="_blank">log4net</a> supporta
una gerarchia tra logger, e che questa è implicata dal nome: se voglio, per esempio,
per tutti i logger di NH loggare solo i messaggi di fatal error posso scrivere:
</p>
        <pre>
          <code>&lt;logger name="NHibernate" &gt;<br />
    &lt;level value="FATAL" /&gt;<br />
  &lt;/logger&gt;<br /></code>
        </pre>
        <p>
 
</p>
        <p>
Ed tutti i logger NHibernate.* cadranno in questo caso. Ovviamente lo stesso lo posso
fare con una sotto gerarchia, per esempio con name=”NHibernate.Cfg” riferirò tutti
i log di configurazione.
</p>
        <p>
Buono a sapersi, anche per quando si decidono i nomi dei logger nelle proprie applicazioni.
</p>
        <img width="0" height="0" src="http://www.felicepollano.com/aggbug.ashx?id=58710c0c-064c-438b-949c-fe6ba88be1e8" />
      </body>
      <title>Log4net: configurazione per log multipli</title>
      <guid isPermaLink="false">http://www.felicepollano.com/PermaLink.aspx?guid=58710c0c-064c-438b-949c-fe6ba88be1e8</guid>
      <link>http://www.felicepollano.com/2010/07/05/Log4netConfigurazionePerLogMultipli.aspx</link>
      <pubDate>Mon, 05 Jul 2010 09:56:00 GMT</pubDate>
      <description>&lt;p align="justify"&gt;
A volte si vuole ottenere l amedesima configurazione di logging per log con diverso
nome, accomunati da una radice: xEs se usiamo NHibernate avremo NHibernate.Cfg.XmlHbmBinding,NHibernate.Cfg.Configuration,
NHibernate.Cfg.SettingsFactory, NHibernate.Dialect.Dialect … e via discorrendo. E’
bello sapere che &lt;a href="http://logging.apache.org/log4net/index.html" target="_blank"&gt;log4net&lt;/a&gt; supporta
una gerarchia tra logger, e che questa è implicata dal nome: se voglio, per esempio,
per tutti i logger di NH loggare solo i messaggi di fatal error posso scrivere:
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;logger name="NHibernate" &amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;level value="FATAL" /&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/logger&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Ed tutti i logger NHibernate.* cadranno in questo caso. Ovviamente lo stesso lo posso
fare con una sotto gerarchia, per esempio con name=”NHibernate.Cfg” riferirò tutti
i log di configurazione.
&lt;/p&gt;
&lt;p&gt;
Buono a sapersi, anche per quando si decidono i nomi dei logger nelle proprie applicazioni.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.felicepollano.com/aggbug.ashx?id=58710c0c-064c-438b-949c-fe6ba88be1e8" /&gt;</description>
      <comments>http://www.felicepollano.com/CommentView.aspx?guid=58710c0c-064c-438b-949c-fe6ba88be1e8</comments>
      <category>log4net</category>
    </item>
    <item>
      <trackback:ping>http://www.felicepollano.com/Trackback.aspx?guid=902148d9-a656-49cf-b864-b5bef54fb393</trackback:ping>
      <pingback:server>http://www.felicepollano.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.felicepollano.com/PermaLink.aspx?guid=902148d9-a656-49cf-b864-b5bef54fb393</pingback:target>
      <dc:creator>Felice Pollano</dc:creator>
      <wfw:comment>http://www.felicepollano.com/CommentView.aspx?guid=902148d9-a656-49cf-b864-b5bef54fb393</wfw:comment>
      <wfw:commentRss>http://www.felicepollano.com/SyndicationService.asmx/GetEntryCommentsRss?guid=902148d9-a656-49cf-b864-b5bef54fb393</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Per abilitare il logging delle query con NHibernate occorre:
</p>
        <ol>
          <li>
Avere nella bin dell applicativo ( ie: nella <strong>/bin</strong> per le applicazioni
web, a fianco dell’ esequibile per le applicazioni stand-alone ) la dll di <a href="http://logging.apache.org/log4net/index.html" target="_blank">log4net</a>. 
</li>
          <li>
Aggiungere nel file di configurazione la sessione di config per log4net:</li>
        </ol>
        <p>
&lt;configuration&gt;<br />
  &lt;configSections&gt;<br />
    <strong>&lt;section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,
log4net"/&gt;</strong></p>
        <p>
  &lt;/configSections&gt;<br />
  <strong>&lt;log4net&gt;</strong><br />
    &lt;appender name="console" type="log4net.Appender.ConsoleAppender"&gt;<br />
      &lt;layout type="log4net.Layout.PatternLayout"&gt;<br />
        &lt;param name="ConversionPattern" value="%-5p
- %m%n" /&gt;<br />
      &lt;/layout&gt;<br />
    &lt;/appender&gt;<br />
    <strong>&lt;logger name="NHibernate.SQL" additivity="false"&gt;<br />
      &lt;level value="ALL"/&gt;<br />
      &lt;appender-ref ref="console" /&gt;<br />
    &lt;/logger&gt;<br /></strong>    &lt;root&gt;<br />
      &lt;priority value="WARN" /&gt;<br />
      &lt;appender-ref ref="console" /&gt;<br />
    &lt;/root&gt;<br />
  <strong>&lt;/log4net&gt;<br /></strong>&lt;/configuration&gt; 
</p>
        <p>
Con questa configurazione si usa il console appender, per un’applicativo web potrebbe
essere meglio usare un <a href="http://logging.apache.org/log4net/release/config-examples.html" target="_blank">TraceAppender
o un altro appender di proprio gusto ;-)</a></p>
        <p>
  
</p>
        <li>
Assicurarsi di chiamare, almeno una voltanell’applicazione <strong>log4net.XmlConfigurator.Configure()</strong></li>
        <li>
Aggiungere questa proprietà nella configurazione di NH:                                         <strong>&lt;property
name="show_sql"&gt;true&lt;/property&gt;</strong></li>
        <h6>
        </h6>
        <h3>
          <em>
            <u>Se <b>NON</b> vogliamo mettere nulla di log4net nella configurazione</u>
          </em>:
</h3>
        <p>
Possiamo configurare log4net dall’ applicativo, con un paio di linee di codice:
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="lnum"> 1: </span> TraceAppender
app = <span class="kwrd">new</span> TraceAppender();</pre>
          <pre>
            <span class="lnum"> 2: </span> app.Layout
= <span class="kwrd">new</span> SimpleLayout();</pre>
          <pre class="alt">
            <span class="lnum"> 3: </span> LoggerMatchFilter
filter = <span class="kwrd">new</span> LoggerMatchFilter();</pre>
          <pre>
            <span class="lnum"> 4: </span> filter.LoggerToMatch=<span class="str">"NHibernate.SQL"</span>;</pre>
          <pre class="alt">
            <span class="lnum"> 5: </span> filter.AcceptOnMatch
= <span class="kwrd">true</span>;</pre>
          <pre>
            <span class="lnum"> 6: </span> filter.ActivateOptions();</pre>
          <pre class="alt">
            <span class="lnum"> 7: </span> app.AddFilter(filter); <span class="rem">//
L'ordine di questo filtro</span></pre>
          <pre>
            <span class="lnum"> 8: </span> app.AddFilter(<span class="kwrd">new</span> DenyAllFilter()); <span class="rem">//
e di quest'altro E' importante</span></pre>
          <pre class="alt">
            <span class="lnum"> 9: </span> app.ActivateOptions();</pre>
          <pre>
            <span class="lnum"> 10: </span> BasicConfigurator.Configure(
app);</pre>
          <pre> </pre>
          <pre> </pre>
          <pre> </pre>
        </div>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
In questo caso si possono saltare gli step da 1 a 3. Questo codice deve essere chiamato
una volta nell’applicazione in fase di startup, per un’applicazione web, potrebbe
andare bene l’evento di startup dell'applicazione in <b>global.asax</b>. Con l’appender
e i filtri configurati si ottiene nell'area trace di Visual Studio ( Output-tab Debug) 
l’output delle sole query generate da NH ( senza gli altri logger, se servono 
si possono togliere i filtri )
</p>
        <img width="0" height="0" src="http://www.felicepollano.com/aggbug.ashx?id=902148d9-a656-49cf-b864-b5bef54fb393" />
      </body>
      <title>Abilitare il logging delle query con NHibernate</title>
      <guid isPermaLink="false">http://www.felicepollano.com/PermaLink.aspx?guid=902148d9-a656-49cf-b864-b5bef54fb393</guid>
      <link>http://www.felicepollano.com/2010/04/27/AbilitareIlLoggingDelleQueryConNHibernate.aspx</link>
      <pubDate>Tue, 27 Apr 2010 15:43:20 GMT</pubDate>
      <description>&lt;p&gt;
Per abilitare il logging delle query con NHibernate occorre:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Avere nella bin dell applicativo ( ie: nella &lt;strong&gt;/bin&lt;/strong&gt; per le applicazioni
web, a fianco dell’ esequibile per le applicazioni stand-alone ) la dll di &lt;a href="http://logging.apache.org/log4net/index.html" target="_blank"&gt;log4net&lt;/a&gt;. 
&lt;/li&gt;
&lt;li&gt;
Aggiungere nel file di configurazione la sessione di config per log4net:&lt;/li&gt;
&lt;p&gt;
&amp;lt;configuration&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;configSections&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&amp;lt;section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,
log4net"/&amp;gt;&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; &amp;lt;/configSections&amp;gt;&lt;br&gt;
&amp;nbsp; &lt;strong&gt;&amp;lt;log4net&amp;gt;&lt;/strong&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;appender name="console" type="log4net.Appender.ConsoleAppender"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;layout type="log4net.Layout.PatternLayout"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;param name="ConversionPattern" value="%-5p
- %m%n" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/layout&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/appender&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&amp;lt;logger name="NHibernate.SQL" additivity="false"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;level value="ALL"/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;appender-ref ref="console" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/logger&amp;gt;&lt;br&gt;
&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;root&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;priority value="WARN" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;appender-ref ref="console" /&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/root&amp;gt;&lt;br&gt;
&amp;nbsp; &lt;strong&gt;&amp;lt;/log4net&amp;gt;&lt;br&gt;
&lt;/strong&gt;&amp;lt;/configuration&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
Con questa configurazione si usa il console appender, per un’applicativo web potrebbe
essere meglio usare un &lt;a href="http://logging.apache.org/log4net/release/config-examples.html" target="_blank"&gt;TraceAppender
o un altro appender di proprio gusto ;-)&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; 
&lt;/p&gt;
&lt;li&gt;
Assicurarsi di chiamare, almeno una voltanell’applicazione &lt;strong&gt;log4net.XmlConfigurator.Configure()&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
Aggiungere questa proprietà nella configurazione di NH:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;&amp;lt;property
name="show_sql"&amp;gt;true&amp;lt;/property&amp;gt;&lt;/strong&gt;
&lt;/li&gt;&gt;
&lt;h6&gt;
&lt;/h6&gt;
&lt;h3&gt;&lt;em&gt;&lt;u&gt;Se &lt;b&gt;NON&lt;/b&gt; vogliamo mettere nulla di log4net nella configurazione&lt;/u&gt;&lt;/em&gt;:
&lt;/h3&gt;
&lt;p&gt;
Possiamo configurare log4net dall’ applicativo, con un paio di linee di codice:
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 1: &lt;/span&gt; TraceAppender
app = &lt;span class="kwrd"&gt;new&lt;/span&gt; TraceAppender();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 2: &lt;/span&gt; app.Layout
= &lt;span class="kwrd"&gt;new&lt;/span&gt; SimpleLayout();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 3: &lt;/span&gt; LoggerMatchFilter
filter = &lt;span class="kwrd"&gt;new&lt;/span&gt; LoggerMatchFilter();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 4: &lt;/span&gt; filter.LoggerToMatch=&lt;span class="str"&gt;"NHibernate.SQL"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 5: &lt;/span&gt; filter.AcceptOnMatch
= &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 6: &lt;/span&gt; filter.ActivateOptions();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 7: &lt;/span&gt; app.AddFilter(filter); &lt;span class="rem"&gt;//
L'ordine di questo filtro&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 8: &lt;/span&gt; app.AddFilter(&lt;span class="kwrd"&gt;new&lt;/span&gt; DenyAllFilter()); &lt;span class="rem"&gt;//
e di quest'altro E' importante&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 9: &lt;/span&gt; app.ActivateOptions();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 10: &lt;/span&gt; BasicConfigurator.Configure(
app);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
In questo caso si possono saltare gli step da 1 a 3. Questo codice deve essere chiamato
una volta nell’applicazione in fase di startup, per un’applicazione web, potrebbe
andare bene l’evento di startup dell'applicazione in &lt;b&gt;global.asax&lt;/b&gt;. Con l’appender
e i filtri configurati si ottiene nell'area trace di Visual Studio ( Output-tab Debug)&amp;nbsp;
l’output delle sole query generate da NH ( senza gli altri logger, se servono&amp;nbsp;
si possono togliere i filtri )
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.felicepollano.com/aggbug.ashx?id=902148d9-a656-49cf-b864-b5bef54fb393" /&gt;</description>
      <comments>http://www.felicepollano.com/CommentView.aspx?guid=902148d9-a656-49cf-b864-b5bef54fb393</comments>
      <category>NHibernate</category>
      <category>log4net</category>
    </item>
  </channel>
</rss>