トップ回答者
AzureログがWADLogsTableへ転送されない。

質問
-
お世話になっております。
DiagnosticMonitorTraceListenerクラスを利用した「WADLogsTable」へのログ転送がおこなわれません。
正確には、1度目に出力したログしか転送が行われないのですが、何が原因か分かりません。
ご教授願えないでしょうか?
【環境】
・VS2010 Ultimate 日本語版
【実行環境】
Development Fabric と 本番環境 の両環境で試しました。
【事象】
WebRole.cs と Default.aspxのPageLoadメソッドで出力したログ情報しか、WADLogsTableへ転送されません。
Default.aspxは、PageLoadメソッドの他のメソッドでも、ログを出力しています。
また、Default.aspxから遷移する画面でもログを出力しています。
ログ出力には、System.Diagnostics.Trace.TraceInformation() を利用しています。
Development Fabricのコンソールには出力したログが表示されています、例外は出ずに正常に動作します。
【追記】出力するログには、日本語は入れていません。
【DiagnosticMonitorConfigurationの定義内容】
DiagnosticMonitorConfiguration DiagnosticConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
DiagnosticConfig.Logs.ScheduledTransferPeriod = System.TimeSpan.FromMinutes(Interval);
DiagnosticConfig.Logs.ScheduledTransferLogLevelFilter = LogLevel.Undefined;
DiagnosticConfig.OverallQuotaInMB = 8073;
DiagnosticConfig.Logs.BufferQuotaInMB = 5000;DiagnosticMonitor.Start("DiagnosticsConnectionString", DiagnosticConfig);
【Web.configの定義内容】
<system.diagnostics>
<trace>
<listeners>
<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=XXXXXXXXXXXXXX(文字列が入っています)"
name="AzureDiagnostics">
</add>
</listeners>
</trace>
</system.diagnostics>単なるプログラムの実装ミスなのでしょうか??
気になっている点として、ログ出力を実行しているクラスは別クラスで行っていることが気になっています。。。
→各画面の各メソッドから自作のログ出力共通クラスをnewして呼び出し、ログ出力しています。
各画面クラスでログ出力すると、ログ転送が行われています・・・
回答
-
こんにちは。
自作のログ出力用クラスにて System.Diagnostics.Trace.Listeners にリスナーを追加してあげると良いかもです。(未検証)
こちらのフォーラムを参考にされては如何でしょうか。http://social.msdn.microsoft.com/Forums/en/windowsazure/thread/2217654d-5c86-44da-b0bf-30753f9e9ad1
以下引用
protected void TraceSomething() { System.Diagnostics.Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener()); System.Diagnostics.Trace.AutoFlush = true;
System.Diagnostics.Trace.WriteLine("Jeeves and Wooster");}
- 回答としてマーク .NET初心者というより全て初心者 2011年4月4日 6:31
すべての返信
-
こんにちは。
自作のログ出力用クラスにて System.Diagnostics.Trace.Listeners にリスナーを追加してあげると良いかもです。(未検証)
こちらのフォーラムを参考にされては如何でしょうか。http://social.msdn.microsoft.com/Forums/en/windowsazure/thread/2217654d-5c86-44da-b0bf-30753f9e9ad1
以下引用
protected void TraceSomething() { System.Diagnostics.Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener()); System.Diagnostics.Trace.AutoFlush = true;
System.Diagnostics.Trace.WriteLine("Jeeves and Wooster");}
- 回答としてマーク .NET初心者というより全て初心者 2011年4月4日 6:31
-
k.buchi様、返信ありがとうございます!
紹介して頂いた、フォーラムを参考に検証してみました。
結果は、自作のログ出力用クラスのログが出力されました!
ただ、同じログが2回出力されるという現象に陥っており、原因を調査中です。。。
正確には、WebRole.csと各画面.aspxのPageLoadメソッドで出力しているログが1件余分に出力されます。
System.Diagnostics.Trace.Listenersの中に、
Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListenerが2つ入ってしまっていることが原因かも知れません。
しかし、Web.configの定義を削除すると、また最初の症状に戻ってしまいます。
引き続き検証してみたいと思います・・・・
-
引き続き、検証してみた結果、開発環境+本番Storage Tableへは想定とおりにログを出力することができました。
しかし、Auzre環境 + 本番Storageでは、うまくいきません。。。
ログが出力されたりされなかったり、Tableへの転送時間にムラがあったり、もうどうなってるかわけが分からない状態です・・・。
(短時間でかなりログを出力しているので、その当たりが原因のような気もしますが。)
継続調査を行い、どうしても原因が分からないようであれば、自作のログTableを作成しようと思います。
当質問は回答マークを付けて終了したいと思います。ありがとうございました!