nHibernate禁用我的log4net日志

时间:2010-02-03 23:30:32

标签: nhibernate log4net

所以,我们有一个ETL应用程序,它有一些更新问题。在nHibernate的下午冲刺中很好地解决了这个问题。但是这个应用程序依靠log4net根据命令行开关将日志输出推送到几个不同的目的地。一旦我们将nHibernate包装到应用程序中,它就会完美无缺。但是日志记录功能完全失败了。从调试器的角度来看,我们的任何记录器都禁用了所有log4net的级别。

这是log4net配置:

<log4net>
  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="import-" />
    <staticLogFileName value="false" />
    <appendToFile value="false" />
    <rollingStyle value="Date" />
    <maxSizeRollBackups value="5" />
    <datePattern value="yyyyMMdd-HHmm&quot;.log&quot;" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %-5level - %message%newline" />
    </layout>
  </appender>

  <appender name="Console" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level : %message%newline" />
    </layout>
  </appender>

  <appender name="Email" type="log4net.Appender.SmtpAppender">
    <to value="wwb@example.com" />
    <from value="PeepsImporter@example.com" />
    <subject value="Cte Importer Error" />
    <smtpHost value="smtp.example.com" />
    <bufferSize value="512" />
    <lossy value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%newline%date %-5level : %message%newline%newline%newline" />
    </layout>
  </appender>

  <root>
    <level value="ALL" />
  </root>

  <logger name="Console">
    <level value="INFO" />

    <appender-ref ref="Console" />
  </logger>
  <logger name="File">
    <level value="INFO" />
    <appender-ref ref="RollingFile" />
  </logger>
  <logger name="DebugConsole">
    <level value="DEBUG" />
    <appender-ref ref="Console" />
  </logger>
  <logger name="DebugFile">
    <level value="DEBUG" />
    <appender-ref ref="RollingFile" />
  </logger>
  <logger name="EmailErrors">
    <level value="ERROR" />
    <appender-ref ref="Email" />
  </logger>
</log4net>

不确定其他代码会有什么帮助,但我很乐意在此应用中发布任何其他代码。

2 个答案:

答案 0 :(得分:2)

您使用的是什么版本的NHibernate?早于1.0-RC1的构建在内部开启了登录。在1.0-RC1中,他们更改了此项,因此您必须手动调用log4net.XmlConfigurator.Configure()。这样做是为了让开发人员更好地控制日志记录。

答案 1 :(得分:0)

您可以尝试在log4net中打开内部调试:请参阅以下链接中的此部分:

“如何启用log4net内部调试?”

http://logging.apache.org/log4net/release/faq.html