LoginSignup
1
0

More than 5 years have passed since last update.

Webロールで出力したトレースログをWADLogsTableに転送する

Last updated at Posted at 2017-02-09

はじめに

Azureクラウドサービスにはトレースログをテーブルに転送機能があります。
この機能で昔から微妙なのが、Webロール内で出力したログについては転送されないことです。

トレースログを転送するリスナーの設定はWeb.Condigに、下記のように書いてあります。

<system.diagnostics>
  <trace>
    <listeners>
      <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics" initializeData="603db610-7a5f-4f96-a49a-297659a92795">
        <filter type="" />
      </add>
    </listeners>
  </trace>
</system.diagnostics>

ところが、WebロールはIIS上で動いているわけではない(という表現であっているのだろうか)ので、Web.configを読むことができません。
結果的に、リスナーがセットされないために、Webロール内でいくらトレースログを出力してもAzureテーブルには転送されません。

対応策(Azure SDK 2.4まで)

今さら、Azure SDK 2.4以前のことを書くのも微妙なのですが・・・

2.4までは次のようにOnStart()のDiagnosticMonitorTraceListenr()を追加すれば、Webロールからもトレースログを転送できました。

public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {
        Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener());

        // 以下略
    }
}

対応策(Azure SDK 2.5~2.9)

Azure SDK 2.5から、DiagnosticMonitorTraceListenerの基底クラスが以下のように変更になりました。

Azure SDK 基底クラス
?~2.4 System.Diagnostics.TraceListener
2.5~2.9 Microsoft.Cis.Eventing.Listeners.RDEventMonitoringAgentListener

DiagnosticMonitorTraceListenerはTraceListenerを継承しなくなったので、Azure SDK 2.4までのように単純に追加するわけにはいかなくなりました。

TraceListenerを継承する自作クラスでDiagnosticMonitorTraceListenerをラップ作成して・・・

というのをAzure SDK 2.9の環境で試しましたが全く転送されず、色々調べて辿りついたのがこの投稿です。

Adding the trace listener in webroles.cs as the WebRole process is not configured by the web.config - Stack Overflow

単純に、MonAgentListenerをアセンブリ参照に追加すれば、Azure SDK 2.5~2.9でも、同様にトレースリスナーにDiagnosticMonitorTraceListenerを追加することで、Webロール内のトレースログが転送されるようになりました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0