備忘録です。
log4netを使ってWADLogsTableにログを出力するわけですがAzureSDKのバージョンアップに伴って色々と使い方が変わってきたみたいです。
ちょっと嵌ったことがあるので色々とかいておきます。
log4netでAzureにログを出力する方法は下記のURLたちをご参照ください。(英語で申し訳ない・・・)
■ 注意点 1
Azure.Diagnosticsの参照をするとConfigファイルに下記の設定が必要になります。この設定がないと転送されないです。
気をつけないといけない点は参照するDLLのバージョンとTokenがConfigファイルの設定と合致している必要があることです。
ここを意識しないと完璧にはまります。
※AzureSDK2.1の場合
<system.diagnostics> <trace> <listeners> <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics"/> </listeners> </trace> </system.diagnostics>
あと、AzureプロジェクトのSDKのバージョンとあっていないとログが出力されないです。
AzureプロジェクトのSDKが2.1ならDiagnosticsも2.1を参照する必要があるみたいです。
実際、AzureプロジェクトのSDK2.2でDiagnostics2.1の組み合わせでログテーブルに転送されてませんでした。(ここ嵌った・・・。)
AzureプロジェクトのSDKバージョンを知りたい場合は、Azureプロジェクトを右クリック → プロパティから見れます。
■ 注意点 2
Azureプロジェクトに下記の設定が増えています。
※ロールインスタンスをダウぶるクリックで参照できます。
クリックすると各ログ情報の出力設定を行えます。
ここで設定した情報はロールインスタンス配下の[ diagnostics.wadcfg]に出力されます。
log4netで出力ログレベルの指定がありますが、こちらの設定が優先されるみたいなので注意です。
log4netで下記のようにERRORからFATALだけ出す用に設定しても、上記の構成でログレベルをINFOやALLにしているとそちらが優先されて出力されます。
<filter type="log4net.Filter.LevelRangeFilter,log4net"> <levelMin value="ERROR" /> <levelMax value="FATAL" /> </filter>
多分、log4netがDiagnosticsを継承しているのでベースの設定が優先されるんだと思います。
コメント