логирование nhibernate 3.2 sql запрос - PullRequest
1 голос
/ 10 ноября 2011

Я нашел пост о трудностях, возникающих при регистрации SQL-запросов при использовании NHibernate 3.x На самом деле я использую NHibernate 3.2, и я не могу заставить работать sql logging. Мне просто нужны простые возможности ведения журналов, которые пишутся в окне вывода при тестировании или отладке. Раньше работал в NH 2.2, но с этой новой версией что-то не так. Как говорится в этой статье , я просто настроил NHibernate с

<property name="show_sql">true</property>

У меня есть этот простой код:

using (var session = PersistenceManager.Istance.GetSession()) {
    var result = (from agenzia in session.Query<Agenzia>()
                 select agenzia).ToList();
    return result;    
}

Но, похоже, из БД ничего не получается. Так что я не знаю, ничего не зарегистрировано (я отлаживаю под Visual Studio 2010, поэтому я ожидаю увидеть что-то в окне вывода), или просто ничего не выполняется по какой-то странной причине. Там нет исключений, поэтому я немного растерялся

РЕДАКТИРОВАНИЕ: по запросу это полный файл конфигурации для NHibernate:

<?xml version="1.0" encoding="utf-8" ?>
<!-- NHibernate Configuration -->
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory name="NHibernate.xlns">
    <property name="dialect">
      NHibernate.Dialect.MsSql2000Dialect
    </property>
    <property name="connection.driver_class">
      NHibernate.Driver.SqlClientDriver
    </property>
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

флаг show_sql, AFAIK регистрирует STDOUT , поэтому он отлично работает в модульном тесте или консольном приложении, но ничего не делает, если в вашем приложении нет stdout (т.е. winapp или веб-приложения) В этом случае вы должны включить журнал NHibernate.SQL в конфигурации log4net (или в альтернативном логгере, который вы возможно используете). В веб-приложении вы можете настроить приложение трассировки, чтобы видеть зарегистрированный запрос в окне трассировки отладчика.

0 голосов
/ 18 января 2012

Если вы используете log4net, то, чтобы включить ведение журнала SQL, помимо установки <property name="show_sql">true</property>, вам необходимо установить уровень INFO или DEBUG (подробный) следующим образом:

  <log4net>
    ...
    <!-- Print only messages of level INFO or above in 'NHibernate' package  -->
    <logger name="NHibernate">
      <level value="INFO" />
    </logger>
  </log4net>
...