2009-11-11 2 views
3

je dans mon fichier web.config (modifié pour tenir compte des changements):Ne peut pas obtenir quoi que ce soit à log4net de sortie lors de l'utilisation de NHibernate

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

    <log4net debug="true"> 
    <appender name="DebugAppender" type="log4net.Appender.AspNetTraceAppender"> 
     <layout type="log4net.Layout.PatternLayout, log4net"> 
     <param name="ConversionPattern" value="%d %p %m%n" /> 
     </layout> 
    </appender> 
    <appender name="DataLog" type="log4net.Appender.RollingFileAppender"> 
     <file value="c:\temp\nhlog.txt" /> 
     <appendToFile value="true" /> 
     <maximumFileSize value="100MB" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="5" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" /> 
     </layout> 
    </appender> 
    <root> 
     <priority value="DEBUG" /> 
     <appender-ref ref="DebugAppender" /> 
    </root> 
    <logger name="NHibernate" additivity="false"> 
     <level value="INFO"/> 
     <appender-ref ref="DebugAppender"/> 
    </logger> 
    </log4net> 

J'appelle log4net.Config.XmlConfigurator.Configure () à partir de Application_Start().

J'ai [assemblage: log4net.Config.XmlConfigurator (Montre = true)] dans le fichier AssemblyInfo.cs dans mon projet web.

Pourquoi suis-je pas NHibernate messages de débogage dans ma fenêtre de sortie? (J'essaie d'obtenir TOUS les messages que NHibernate crache.) Si j'utilise le RollingFileAppender, cela fonctionne très bien. Je l'ai essayé le DebugAppender, TraceAppender, OutputDebugStringAppender et AspNetTraceAppender et aucun d'entre eux stuff sortie vers la fenêtre de sortie.

Répondre

2

Essayez d'utiliser un autre appender.

ConsoleAppenders probablement ne fonctionnent pas pour les applications Web. Utilisez quelque chose comme un FileAppender.

Voir this pour des exemples sur configuraiton.

1

Vous pouvez essayer d'associer l'enregistreur NHibernate spécifique à un appendeur log4net.

Si vous voulez vous connecter tous les sql généré, essayez d'ajouter ceci à votre section de configuration log4net:

<logger name="NHibernate.SQL" additivity="false"> 
    <level value="DEBUG" /> 
    <appender-ref ref="ConsoleAppender" /> 
</logger> 

Si, pour une raison quelconque, vous ne vouliez vous connecter les instructions Select et informations de diagnostic, vous pouvez utiliser NHibernate.Loader.Loader, comme ceci:

<logger name="NHibernate.Loader.Loader" additivity="false"> 
    <level value="INFO" /> 
    <appender-ref ref="ConsoleAppender" /> 
</logger> 
2

de réponse similaire à quolibet, ConsoleAppender n'est pas le droit appender à utiliser dans une application web. Un OutputDebugStringAppender vous donnera des messages dans votre fenêtre de débogage. Vous pouvez également regarder dans AspNetTraceAppender.

Questions connexes