【问题标题】:Can't get log4net to output anything when using NHibernate使用 NHibernate 时无法让 log4net 输出任何内容
【发布时间】:2010-12-15 13:20:16
【问题描述】:

我的 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,但它们都没有将内容输出到输出窗口。

【问题讨论】:

    标签: nhibernate log4net


    【解决方案1】:

    尝试使用不同的附加程序。

    ConsoleAppender 可能不适用于 Web 应用程序。使用类似 FileAppender 的东西。

    有关配置的示例,请参阅 this

    【讨论】:

      【解决方案2】:

      类似于 quip 的回答,ConsoleAppender 不是在 Web 应用程序中使用的正确附加程序。 OutputDebugStringAppender 将在调试窗口中为您提供消息。您可能还想查看AspNetTraceAppender

      【讨论】:

        【解决方案3】:

        您可以尝试将特定的 NHibernate 记录器与 log4net 附加程序相关联。

        如果您想记录所有生成的 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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-07
          • 1970-01-01
          • 1970-01-01
          • 2014-06-10
          • 1970-01-01
          • 1970-01-01
          • 2018-09-03
          相关资源
          最近更新 更多