我在我的web.config文件中有这个(编辑以反映一些更改):
<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>
我正在从Application_Start()调用log4net.Config.XmlConfigurator.Configure()。
我的web项目的AssemblyInfo.cs文件中有[assembly:log4net.Config.XmlConfigurator(Watch = true)]。
为什么我的输出窗口中没有NHibernate调试消息? (我试图获取NHibernate吐出的所有消息。)如果我使用RollingFileAppender它可以正常工作。我已经尝试过DebugAppender,TraceAppender,OutputDebugStringAppender和AspNetTraceAppender,它们都没有输出到输出窗口。
答案 0 :(得分:2)
答案 1 :(得分:2)
与quip的答案类似,ConsoleAppender
不适合在Web应用程序中使用。 OutputDebugStringAppender
会在调试窗口中显示消息。您可能还想查看AspNetTraceAppender
。
答案 2 :(得分:1)
您可以尝试将特定的NHibernate记录器与log4net appender相关联。
如果要记录所有生成的sql,请尝试将其添加到log4net配置部分:
<logger name="NHibernate.SQL" additivity="false">
<level value="DEBUG" />
<appender-ref ref="ConsoleAppender" />
</logger>
如果出于某种原因,您只想记录Select语句和诊断信息,可以使用NHibernate.Loader.Loader,如下所示:
<logger name="NHibernate.Loader.Loader" additivity="false">
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
</logger>