nabehiro ブログ

開発・プログラミングに関して適当に書くブログ

NLog ログ出力とエラー通知(プッシュ通知)を行う

エラーが発生した場合、メールで通知をすることが多いかと思います。
ただ、メールを都度確認するのは面倒なので、iPhone のプッシュ通知で確認する方法を考えてみた。
みんな大好き Atlassian が提供している HipChat & HipChat API & HipChat iPhone app を利用して
NLog の機能拡張(Nuget)を作成して、通知できるようにしてみました。

https://github.com/nabehiro/NLog.Extensions

利用する手順は以下の通り

HipChat アカウントの作成

https://www.hipchat.com/

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 で通知できるけど、ちょっと一通当たりタカイッス・・