Если уровни ведения журнала, установленные для регистраторов NHibernate, слишком высоки (или выключены), вы можете не увидеть никаких сообщений журнала от NHibernate.Например, каково значение
((log4net.Repository.Hierarchy.Logger)LogManager.GetLogger("NHibernate").Logger).Level
?
В вашем конфигурационном файле должен быть раздел, подобный следующему:
<log4net>
<appender name="NHLog" type="log4net.Appender.FileAppender">
<file value="logs/nhibernate.log" />
<appendToFile value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<logger name="NHibernate" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="NHLog"/>
</logger>
</log4net>
Обновление: Если журналФайл всегда создается (если он не существует до запуска), но всегда пуст, это указывает на исключение во время добавления.Чтобы минимизировать возможность исключения, сделайте очень простой conversionPattern
(возможно, просто "%m%n"
) и посмотрите, генерируется ли какой-либо вывод.Если есть, добавьте обратно элементы шаблона преобразования, пока не найдете, в чем проблема.Если выходные данные не генерируются, зарегистрируйте что-либо в регистраторе NHibernate из своего собственного кода (это нормально) и перейдите к нему в отладчике.
ILog log = LogManager.GetLogger("NHibernate");
log.Info("Application starting");
Если все еще нет радости, возможно, вам придется опубликовать некоторыевашего кода / конфигурации.