NLog Extended AspNetBufferingWrapper не работает

У меня есть следующая цель в моем web.config, использующая оболочку AspNetBufferingWrapper NLog Extended

<wrapper-target type="ASPNetBufferingWrapper" name="aspNetBuffer">
    <wrapper-target type="PostFilteringWrapper" name="postFilter" defaultFilter="level >= LogLevel.Debug">
      <target-ref name="logDB" />
      <when exists="level >= LogLevel.Warn" filter="level >= LogLevel.Trace" />
    </wrapper-target>
  </wrapper-target>

Target-ref работает без оберток или с другими обертками. У меня есть httpmodule, как рекомендует документация

<httpModules>
  <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
  <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
  <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
  <add name="NLog" type="NLog.Web.NLogHttpModule, NLog.Extended" />
</httpModules>

Я настроил его в проекте MVC3 с NLog.2.0.0.2000 и NLog.Extended.2.0.0.2000.

Я включил модуль elmah, чтобы указать, что этот модуль работает. После поиска я обнаружил, что IIS 7 в интегрированном режиме использует модули system.webServer. Я заметил, что в модуле elmah этот раздел уже настроен, поэтому я включил NLog.Extended.

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
      <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
      <add name="NLog" type="NLog.Web.NLogHttpModule, NLog.Extended" preCondition="managedHandler" />
    </modules>
  </system.webServer>

Ну, это тоже не сработало... Я активировал внутренний регистратор Nlog в режиме трассировки и вижу следующее:

2013-03-19 16:06:58.2933 Trace Sending buffered events to wrapped target: PostFilteringWrapper Target[postFilter](AsyncWrapper Target[logDB](Database Target[logDB_wrapped])).
2013-03-19 16:06:58.2933 Trace Running PostFilteringWrapper Target[postFilter](AsyncWrapper Target[logDB](Database Target[logDB_wrapped])) on 0 events
2013-03-19 16:06:58.3053 Trace Filter to apply: (level >= Debug)
2013-03-19 16:06:58.3053 Trace After filtering: 0 events.

Я не могу вспомнить, что еще делать / искать. Я что-то упускаю?


person user2187153    schedule 19.03.2013    source источник


Ответы (1)


Причина, по которой записывается только файл журнала из AsyncWrapper, заключается в том, что ваши ASPNetBufferingWrapper и AsyncWrapper имеют одинаковое имя. Также ваши цели File имеют то же имя.

Но это можно увидеть только при просмотре файла конфигурации, http://pastebin.com/3cP83PWa, размещенного на страница с проблемами NLog

Если ваши цели имеют уникальные имена, оба файла будут записаны.

person Xharze    schedule 01.04.2013