Do what you want to do

プログラミングとかとか

Azure SDK 2.5のWADでカスタムログが転送されない問題

2015/07/14 追記:SDK 2.6ではrelativePathでログ転送できるようになったようです。

今回はAzureネタです。
親切な方がこちらのブログでAzure SDK 2.5のDiagnosticsへの移行方法をまとめて下さっています。

私もSDK2.5にアップグレードしてWADの動作を確認してみたところ、
ローカルストレージに出力したアプリケーションのログファイルだけが
BLOBに転送されない!!!なぜだ???

ちなみにdiagnostics.wadcfgxの設定はこんな感じになっています。(該当部分のみ抜粋)

<DataSources>
  <DirectoryConfiguration containerName="customlog">
    <LocalResource name="LogStore" relativePath="."/>
  </DirectoryConfiguration>
</DataSources>

LocalResource指定の方法はVisual StudioGUIからは設定できないのですが、wadcfgxを直接編集することで設定できるんですよね~。(参考)

自分だけかと思って他の方にも確認していただいたところ、同じように転送できないそうなのでSDK2.5のバグかもしれません。。

現時点での対応としてはVisual StudioGUIから設定できる絶対パスで設定するしかないようです。

<DataSources>
  <DirectoryConfiguration containerName="customlog">
    <Absolute path="C:\Resources\directory\<ロールのデプロイID>.<ロール名>.<ローカルストレージ名>" expandEnvironment="false"/>
  </DirectoryConfiguration>
</DataSources>

ちなみにAbsoluteの方法では環境変数が使えないバグ?があるみたいなので注意が必要です。
普通、Absoluteの方法では環境変数の値を使ってC:\Resources\Directory\%RoleDeploymentID%.%RoleName%.<ローカルストレージ名>のように設定すると思いますがこれだとうまく転送されません。ロールのデプロイIDやロール名をハードコードする必要があります。

2015年12月9日の対応期限までにこれらのおかしな問題が修正されれば良いのですが。