1

Azure Web/Worker ロールのログ情報を取得する方法を見つけようとしているときに、構成設定を 2 か所で設定する必要があることを多くの投稿が示唆しています。

1 .config ファイルの構成

<system.diagnostics>
    <switches>
      <add name="logLevel" value="2" />
    </switches>
    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
          <filter type="" />
        </add>
      </listeners>
    </trace>
  </system.diagnostics>

2. プログラムによる (つまり、OnStart メソッド)

DiagnosticMonitorConfiguration config = DiagnosticMonitor.GetDefaultInitialConfiguration();
config.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Warning;
DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", config);

ロギング フィルタ レベルを 2 回定義する必要があると誰もが提案している理由がわかりません。

構成ファイルで十分ではないでしょうか?

4

2 に答える 2

3

1 つ目では、使用するトレース リスナーの種類をアプリケーション (Web サイトなど) に伝えます。つまり、 のようなものを書いた場合Trace.WriteLine("Something")、誰がそのメッセージを聞くべきかということです。

2 番目に、VM で実行されている診断モニター エンジンに、送信されたトレース データをどう処理するかを指示します。

たとえば、コード (OnStart メソッド) で次のように構成しました。

config.Logs.ScheduledTransferLogLevelFilter = LogLevel.Warning;

つまり、診断モニター エンジンはログ レベルWarning以上のトレース メッセージのみを受け入れるということです。つまり、これらのメッセージのみがストレージに転送されると見なされます。そのためTrace.Information("Something")、コードを記述していても、診断モニターによって無視されます。

コードで行うもう 1 つのことは、収集した診断データの処理方法を診断エンジンに指示することです。他に構成するものには次のものがあります。

  • バッファー クォータ - ロールオーバーされる前にバッファーに保持する必要があるデータの量。
  • ストレージへの転送 - Windows Azure ストレージにデータを転送する頻度。
于 2013-06-02T04:19:46.100 に答える
1

@Gaurav Mantri の答えは、おそらくあなたが必要としていたものに正確に触れています。
でも、

構成ファイルで十分ではないでしょうか?

「十分」という言葉の意味がわかりません。
Azure クラウド サービスは、DiagnosticsMontiro の既定値で既に事前定義されているため、これらのコード行を追加する必要はありません。

実際には、Azure 構成のほとんどすべてがアプリケーションの外部から制御できるため、コードで構成を変更しないことも推奨されます。

以下はMSDNからの抜粋です。

Windows Azure SDK では、ロールの OnStart メソッドで診断をプログラムで構成する代わりに、XML 構成ファイル (diagnostics.wadcfg) を使用して診断を構成できます。
このアプローチには、コードを記述するよりもいくつかの利点があります。

  1. OnStart メソッドが呼び出される前に診断が開始されるため、起動タスクのエラーをキャッチしてログに記録できます。
  2. 実行時に構成に加えられた変更は、再起動後も保持されます。
  3. 診断構成を変更しても、コードを再構築する必要はありません。
  4. 追加のコードを必要とせずに、特定の構成で診断モニターを自動的に開始できます (ロールの開始を妨げる例外が発生する可能性があります)。
于 2013-06-02T15:20:34.297 に答える