これは私を夢中にさせています...私は半日かけてすべてを変えようとしましたが、log4netにNHibernateについて何も吐き出させることができません。
これが私の現在のFluentNHibernate構成です。
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 configでShowSql()を設定=>SQLがVSコンソールに表示されます。
- NHibernateロガーの追加
- 加法性の除去
- LogFileAppenderの代わりにConsoleAppenderを使用します(アプリケーションから通常のログを取得しますが、出力にSQLがありません)
- Fluent NHibernateを再コンパイルし、log4netの3つの異なるバージョンを試しました...
私のFluentNhibernateマッピングは良好で、私のアプリはlog4netなしで完全に機能しています。
NHibernateからのクエリをまだログに記録できません...何が起こっているのかわかりませんが、手がかりがあれば、喜んで試してみます!!!
ありがとう!