忍者ブログ

Ryoの技術メモ

仕事の中で気が付いたことを書き綴ります。

ブログ整理中のため古い記事を隠しています。整形して徐々に戻していきます。

<< | 2024/05 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | >>

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Windows AzureのTraceログは日本語の文字列を書き込むとトラブルが起きる

Windows AzureでのTraceログを使う場合の注意点。









AzureのTraceログに関する基本的な内容は以下のリンクを参照。
業務システムでWindows Azureを使うための42の覚え書き
「◇11:採取可能なログと格納先」


システムの動作ログの出力は基本的にこのTraceログを使うのが通常だと思いますが、
Traceログに日本語(ていうかマルチバイト文字?)が含まれていると正常に書き込めないケースがあります。

色々調べましたがはっきりとした条件はわかりませんでした。
「特定の文字」が含まれていると必ず失敗するというわけでもなく、
日本語がある程度の文字数(不定)含まれていると発生します。


Azure Storageに関するよく知られた話として、
「本番環境のAzure Storageには日本語を書き込めるがローカル環境のAzure Storageには書きこめない」
という問題があります。
StorageClient等を使って自分で書いたコードからAzureStorageに書き込む場合はそのとおりで、ローカル環境ではエラーになりますが本番環境では問題ありません。

しかしTraceログの日本語の問題はそれとは別で、ローカル環境だけでなく本番環境でも発生します。
Traceログの「一時的にWebサーバー内で保持して、後からAzure Storageに書きこむまでの間」に何か不具合があるのでしょう。


Microsoft(US)への問い合わせの回答は「バグとして認識している。そのうち対応するからそれまで待て」(意訳)
現時点での対応としては
1.Traceログを全て英語にする。
2.Traceログを書きこむListenerを自作して自分で用意したTableStorageに書き込む。

といったところでしょうか。

今回は簡単な内容で自作して対処しました。
Listenerが受け取ったタイミングでキューに保持しておいて、後から別スレッドから自分で用意したTableに非同期に書きこむだけの簡単な処理です。
ログの量やリクエスト数が膨大でなければこの程度で十分かな、と。

最初からこの件を知っていたら全部英語にしたと思いますけどね。
PR
ブログ内検索
最新コメント
[12/08 Ryo]
[12/07 名無しさん]
[07/19 Ryo]
[07/19 まぁくん]
[07/18 Ryo]
QRコード

AdminControlMenu: AdminMenu | NewEntry | EditComment | EditTrackback

忍者ブログ [PR]