【Azure】【Storage】【NLog】Azure Table StorageにNLogを出力してみた
前回のSendGridでNlogを飛ばすのにつづいて、
Azure Table StorageにNlogを出力するライブラリがあったので、使ってみました。
(他にもhttps://github.com/harouny/NLog.Extensions.AzureTableStorageがありますね。一応違うものなのでご注意)
これでクラウドベースのログ管理が捗る!
WebJobだったら、Console.Writelineが結果として出力されますが、さすがに毎回それを見るのもナンセンスなので。
どんな感じになるの?
以下のような感じで、Azure StorageにLogが出力されます。
Azure Storage Explorerで結構見やすく表示できますね。CSVエクスポートなどにも対応しているのもいいですね。
ここからPower BIなどと合わせて、エラー状況を分析することも手軽にいけるかなぁと思います。
Azure Storageの作成する
なにはともあれ、まずはAzure Storageを作ります。
設定パラメータに関しては、以下のBlogが詳しいです。ありがたい!!
デプロイモデルがちょっとよくわからないですが、もうほとんどの地域では選べないっぽいので割愛。
アカウントの種類は汎用かBLOBストレージが選べますが、今回はTableを利用したいので、汎用一択かな?
パフォーマンスはPremiumにするとSSDになるので、レスポンスがよくなるっぽいですが、Log用だと不要かなと思います。
こんな感じでとりあえず作成します。
作成後、後ほど接続文字列構成のためにアクセスキーが必要になるので、以下の情報を控えておきます。
出力プログラムの作成
Nugetから以下のパッケージをダウンロードします。
インストールしたら、NLogのConfigファイルを設定します。
以下のような感じ。
各種パラメータの指定方法は以下の通り。
項目名 | 説明 |
---|---|
name | Target名。Ruleとの関連付けに使用 |
xsi:type | Nlogの出力タイプ指定。このライブラリを使う場合はAzureTableStorageで固定 |
PartitionKey | Logを分類するための項目フォーマット。例:${date}.${logger} YYYY/MM/DDとLogLevelなどを組み合わせておいておくのがベターかな? 別に自由に指定していいっぽいですね。 |
RowKey | ログの一意指定をするため用の項目フォーマット。例:${ticks}.${guid} GUIDなどをおいておくのがベター? でも重複してもいいっぽい。 |
ConnectionString | Azure Storage への接続文字列。DefaultEndpointsProtocol=https;AccountName=***;AccountKey=xxxxxxx== |
tableName | Azure Storage の対象となるテーブル名。なお、接続先のAzure Storageに無い場合は自動的に作成されるっぽいです。 |
あとは通常のNLogと同じように出力すればOK。