这让我发疯......我花了半天时间试图扭转一切,但我无法让 log4net 吐出任何关于 NHibernate 的信息。
这是我当前的 Fluent NHibernate 配置:
var configuration = Fluently.Configure()
.Database(SQLiteConfiguration.Standard.UsingFile(AppConstants.PATH_FILENAME_DB))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<...>())
[...Mappings...]
.Diagnostics(x => x.Enable());
我的 app.config:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="data/log/unprocessed.log"/>
<param name="AppendToFile" value="true"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<logger name="NHibernate.SQL" additivity="false">
<level value="ALL"/>
<appender-ref ref="LogFileAppender"/>
</logger>
<root>
<level value="INFO"/>
<appender-ref ref="LogFileAppender"/>
</root>
</log4net>
我可以在初始化主表单后立即记录内容:
log4net.Config.XmlConfigurator.Configure();
logger.Info("Here is a debug log!!");
它100%有效。但是我无法从 Nhibernate 中得到任何东西。
我试过了:
- 在我的 Fluent NHibernate 配置中设置 ShowSql() => SQL 出现在 VS 控制台中。
- 添加 NHibernate 记录器
- 去除可加性
- 使用 ConsoleAppender 而不是 LogFileAppender (尽管我从应用程序获取常规日志,但输出中仍然没有 SQL)
- 重新编译 Fluent NHibernate,尝试了 3 个不同版本的 log4net ...
我的 Fluent Nhibernate 映射很好,我的应用程序在没有 log4net 的情况下也能完美运行。
我仍然无法记录来自 NHibernate 的任何查询...不知道发生了什么,但如果您有任何线索,我会很乐意尝试!!!
谢谢!