2

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は、ラッパーなしまたは他のラッパーを使用して機能しています。ドキュメントが推奨するように私は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>

NLog.2.0.0.2000およびNLog.Extended.2.0.0.2000を使用してMVC3プロジェクトで構成しました。

そのモジュールが機能していることを指摘するために、elmahモジュールを含めました。調べてみると、統合モードのIIS7が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.

他に何をすべきか/検索するか思い出せません。私は何かが足りないのですか?

4

1 に答える 1

0

からのログファイルのみAsyncWrapperが書き込まれる理由は、ASPNetBufferingWrapperAsyncWrapperが同じ名前であるためです。また、ファイル ターゲットは同じ名前です。

ただし、これは、 NLog の問題ページに投稿されたhttp://pastebin.com/3cP83PWの構成ファイルを見た場合にのみ確認できます。

ターゲットに一意の名前がある場合、両方のファイルが書き込まれます。

于 2013-04-01T21:01:21.013 に答える