Come ti acchiappo i comandi sql di NH

Nella configurazionr di NH è possibile tramite l'opzione hibernate.show_sql indicare al framework di eseguire il tracing dei comandi sql eseguiti sullo standard output... che per una console application è la console stessa. Come ti acchiappo i comandi sql se sono su web, windows o servizio windows?

Una tecnica interessante è quella di redirigire lo standard out (vedi Console.SetOut) su un writer alternativo che poi reindirizza tale ouput su trace, debug o database. Ecco il semplice TextWriter che ho implementato per una soluzione web. Sicuramente investendo più tempo si può avere qualcosa di più raffinato.

public class Global : System.Web.HttpApplication
{
        #region StoutGrabber
        class StoutGrabber : TextWriter
        {
            public override System.Text.Encoding Encoding
            {
                get
                {
                    return System.Text.Encoding.Default;
                }
            }

            public override void WriteLine(string value)
            {
                Trace.WriteLine(value);
            }
        }
        #endregion
       

        private static readonly StoutGrabber stdout = new StoutGrabber();

        protected void Application_Start(object sender, EventArgs e)
        {
            Console.SetOut(stdout);
        }
}

Riguardo alla  soluzione del salvattaggio su database - esempio per un logging di "debug" aggressivo - attenzione che la scrittura del log dovrà essere fatta senza l'ausilio di NH... o fidatevi che lo StackOverFlow è assicurato in quanto la scrittura del log su db genererebbe il tracing dei comandi sql associati che intercettati si cercherà nuovamente di salvarli e così per un loop senza fine!

mmm... in realtà esiste una mossa più facile e non me ne sono accorto? Dentro di me sto davvero sperando che la risposta sia si...

o0O( Sapete che vi dico? Grazie al nuovo eepc posso dar più voce al mio blog sfruttando i tempi morti della metropolitana... che di strada ne ho tanta e memoria poco e a casa mi sono scordato di pubblicarlo :-)

 

posted @ sabato 4 ottobre 2008 17:51

Print

Comments on this entry:

# re: Come ti acchiappo i comandi sql di NH

Left by makka at 04/10/2008 21:41
Gravatar
IHMO configurare log4net è più semplice.
solo 1 file xml di configurazione (volendo puoi loggare anche su db senza paura dello stack overflow)

# re: Come ti acchiappo i comandi sql di NH

Left by Marco Barzaghi at 05/10/2008 18:18
Gravatar
Grazie Claudio, ho pubblicato una nuova soluzione grazie al tuo commento http://blogs.ugidotnet.org/Markino/archive/2008/10/05/come-ti-acchiappo-i-comandi-sql-di-nh-2.aspx
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011