所以,我们有一个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".log"" />
<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>
不确定其他代码会有什么帮助,但我很乐意在此应用中发布任何其他代码。
答案 0 :(得分:2)
您使用的是什么版本的NHibernate?早于1.0-RC1的构建在内部开启了登录。在1.0-RC1中,他们更改了此项,因此您必须手动调用log4net.XmlConfigurator.Configure()。这样做是为了让开发人员更好地控制日志记录。
答案 1 :(得分:0)
您可以尝试在log4net中打开内部调试:请参阅以下链接中的此部分:
“如何启用log4net内部调试?”