Не удается получить log4net для вывода чего-либо при использовании NHibernate - PullRequest
3 голосов
/ 11 ноября 2009

У меня есть это в моем файле web.config (отредактировано, чтобы отразить некоторые изменения):

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>

  <log4net debug="true">
    <appender name="DebugAppender" type="log4net.Appender.AspNetTraceAppender">
      <layout type="log4net.Layout.PatternLayout, log4net">
        <param name="ConversionPattern" value="%d %p %m%n" />
      </layout>
    </appender>
    <appender name="DataLog" type="log4net.Appender.RollingFileAppender">
      <file value="c:\temp\nhlog.txt" />
      <appendToFile value="true" />
      <maximumFileSize value="100MB" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n"  />
      </layout>
    </appender>
    <root>
      <priority value="DEBUG" />
      <appender-ref ref="DebugAppender" />
    </root>
    <logger name="NHibernate" additivity="false">
      <level value="INFO"/>
      <appender-ref ref="DebugAppender"/>
    </logger>
  </log4net>

Я звоню log4net.Config.XmlConfigurator.Configure () из Application_Start ().

У меня есть [assembly: log4net.Config.XmlConfigurator (Watch = true)] в файле AssemblyInfo.cs в моем веб-проекте.

Почему в моем окне вывода нет сообщений отладки NHibernate? (Я пытаюсь получить ВСЕ сообщения, которые выкладывает NHibernate.) Если я использую RollingFileAppender, он работает нормально. Я пробовал DebugAppender, TraceAppender, OutputDebugStringAppender и AspNetTraceAppender, и ни один из них не выводил данные в окно вывода.

Ответы [ 3 ]

2 голосов
/ 11 ноября 2009

Попробуйте использовать другой appender.

ConsoleAppenders, вероятно, не работают для веб-приложений. Используйте что-то вроде FileAppender.

См. this для примеров конфигурации.

2 голосов
/ 12 ноября 2009

Аналогично ответу квипа, ConsoleAppender не подходит для использования в веб-приложении. OutputDebugStringAppender выдаст вам сообщения в вашем окне отладки. Вы также можете посмотреть на AspNetTraceAppender.

1 голос
/ 11 ноября 2009

Вы можете попытаться связать определенный регистратор NHibernate с приложением log4net.

Если вы хотите зарегистрировать все сгенерированные sql, попробуйте добавить это в раздел конфигурации log4net:

<logger name="NHibernate.SQL" additivity="false">
  <level value="DEBUG" />
  <appender-ref ref="ConsoleAppender" />
</logger>

Если по какой-то причине вам нужно было только регистрировать операторы Select и диагностическую информацию, вы можете использовать NHibernate.Loader.Loader, например:

<logger name="NHibernate.Loader.Loader" additivity="false">
  <level value="INFO" />
  <appender-ref ref="ConsoleAppender" />
</logger>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...