NLog ログ出力とエラー通知(プッシュ通知)を行う
エラーが発生した場合、メールで通知をすることが多いかと思います。
ただ、メールを都度確認するのは面倒なので、iPhone のプッシュ通知で確認する方法を考えてみた。
みんな大好き Atlassian が提供している HipChat & HipChat API & HipChat iPhone app を利用して
NLog の機能拡張(Nuget)を作成して、通知できるようにしてみました。
https://github.com/nabehiro/NLog.Extensions
利用する手順は以下の通り
HipChat アカウントの作成
HipChat 上にエラーの通知先のチャット部屋を作成
HipChat API 用の Auth Token(API v1.0) を作成
https://sigmact.hipchat.com/admin/api
※NLog.Extensions は、v1.0 にしか対応していません。(v2.0もありますので注意)
Nuget のインストール
NLog.Extensions をインストール。
好みで、NLog.Config (NLog設定ファイルの設定が楽になるNuget) をインストール
NLog.config を設定
https://github.com/nabehiro/NLog.Extensions#hipchat-target
iPhone の HipChat app でメッセージのプッシュ通知で受けるには通知先の人を、メンション(@nabehiro とか)で指定する必要があるようです。
NLog.config のサンプル
https://github.com/nabehiro/NLog.Extensions/blob/master/WebSample/NLog.config
NLog でログを書き出すコード追加
public class HomeController : Controller { private static Logger _logger = LogManager.GetCurrentClassLogger(); public ActionResult Index() { _logger.Info("Hello, Nlog on Web"); try { throw new Exception("Oh,My God!!"); } catch (Exception ex) { _logger.Error("Exception occured", ex); } _logger.Error("Hello, Nlog on Web, Error Error"); return View(); } }
軽量なアプリケーションなら、メール+HipChat のエラー通知でいいかなーと。
メールサーバが死んでるときもカバー出来ますし。
余談
プログラムを変えずに対応するには、Zapier で
「あるZapierのメアドにメール受信すると、HipChat の API を投げる」
といった Zap を作っても対応できます。
無料枠だと 現在月80回しか Zap が実行できないのがキツイッス・・
Twilio も電話 or SMS で通知できるけど、ちょっと一通当たりタカイッス・・