NLog Extended AspNetBufferingWrapper无法正常工作

时间:2013-03-19 16:13:07

标签: asp.net-mvc-3 iis-7 httpmodule nlog

我使用NLog Extended的AspNetBufferingWrapper包装器在我的web.config中有以下目标

<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在没有包装器或其他包装器的情况下工作。 我有文件推荐的httpsodule

<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>

我使用NLog.2.0.0.2000和NLog.Extended.2.0.0.2000在MVC3项目中配置。

我已经包含了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>

好吧,它也没有用......我在Trace模式下激活了内部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.

我不记得还有什么要做/搜索。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

仅写AsyncWrapper的日志文件的原因是因为您的ASPNetBufferingWrapperAsyncWrapper具有相同的名称。您的文件目标也具有相同的名称。

但只有在查看http://pastebin.com/3cP83PWa

上发布的配置文件NLog issues page时才会看到这种情况

如果您的目标具有唯一名称,则将写入两个文件。