0

目的

System.Diagnosticsトレースを実行するために使用します。および他のロギング ソリューションを使用log4netしてきましたが、トレースを使用して動作させることにのみ関心がありSystem.Diagnosticsます。

問題

私はTraceEventファイルを発行していますが、どこにも作成されていません。

アプリケーション情報

いくつかの WF サービスをホストしているアプリケーションがあります。サービスの 1 つは、次のような初期状態のステート マシンです。

ステート マシンの初期状態

LogMessageカスタム アクティビティも非常に簡単です。次の 4 つの基本パラメータを受け取ります。

LogMessage パラメータ

TraceSourceを変数として定義します。

LogMessage TraceSource 変数

そして、単に呼び出しますTraceEvent:

LogMessage TraceEvent 呼び出し

構成

このTraceSourceとの構成TraceListenerは次のとおりです。

  <system.diagnostics>
    <trace autoflush="true"/>
    <sources>
      <source name="log" switchValue="All">
        <listeners>
          <add name="file" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
               BaseFileName="gsf_workflows.txt"
               DiskSpaceExhaustedBehavior="ThrowException"
               Location="Custom"
               CustomLocation="D:\Log"
               MaxFileSize="81920000"
               LogFileCreationSchedule="LogFileCreationScheduleOption.Daily"/>
        </listeners>
      </source>
    </sources>
  </system.diagnostics>
4

2 に答える 2

3

2つのこと:

1) .configファイルが正しくないため、例外が原因でワークフローが停止している可能性があります。変更点に注意してください。

<system.diagnostics>
  <sources>
    <source name="log" switchValue="All">
      <listeners>
        <add name="file" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, 
                         Microsoft.VisualBasic, Version=10.0.0.0, 
                         Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
             BaseFileName="gsf_workflows.txt"
             DiskSpaceExhaustedBehavior="ThrowException"
             Location="ExecutableDirectory"
             MaxFileSize="81920000"
             LogFileCreationSchedule="Daily"/>
      </listeners>
    </source>
  </sources>
</system.diagnostics>

2)リスナーをフラッシュする必要があります。そうしないと、リスナーは書き込まれません。あなたは2つの方法でそれを行うことができます。

再度InvokeMethodアクティビティを使用して、ロガー変数でFlushメソッドを明示的に呼び出します。

また

構成ファイルの自動フラッシュをオンにします。

<system.diagnostics>
    <trace autoflush="true"/>
    ....
</system.diagnostics>

そうは言っても、ワークフローの追跡機能とトレース機能を知っているかどうかはわかりません。それはあなたのニーズにぴったりだと思います。その他のリンクと例については、この回答を確認してください。

于 2013-01-24T22:34:06.513 に答える