読者です 読者をやめる 読者になる 読者になる

miso_soup3 Blog

主に ASP.NET 関連について書いています。

ASP.NET で例外診断のために Bugsnag を触ってみた

ASP.NET MVC

Bugsnag という例外診断サービスを ASP.NET で触ってみましたので、簡単にスクリーンショットを貼ります。

bugsnag.com

料金プランはこちら:Pricing and Plans - Bugsnag
14日間の試用期間がある模様。

導入

Bugsnag のサイトにアクセスし、サインアップを行います。

・プラットフォームに .NET を選択。ここで選択したものにあわせて、次の画面でドキュメントが表示されるもよう。
f:id:miso_soup3:20160329232934p:plain

・Visual Studio 2015 を開き、適当な ASP.NET MVC プロジェクトを作成します。

・NuGet で Bugsnag をインストール。

・Web.config にて、以下のように設定します。

<configuration>
  <configSections>
    <section name="bugsnagConfig" 
	type="Bugsnag.ConfigurationStorage.ConfigSection, Bugsnag" />
  </configSections>
  <bugsnagConfig apiKey="**** api key ****" />
</configuration>

・FilterConfig.cs にて、以下のように属性を追加。

using Bugsnag.Clients;
using System.Web;
using System.Web.Mvc;

namespace ReportTry
{
    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(WebMVCClient.ErrorHandler());
            filters.Add(new HandleErrorAttribute());
        }
    }
}

・HomeController.cs に、例外を発生させるコードを追加。

using Bugsnag.Clients;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace ReportTry.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            WebMVCClient.Notify(new ArgumentException("試しの例外です"));

            return View();
        }

        public ActionResult Error()
        {
            throw new Exception("試しの例外発生です", new Exception("InnerExceptionです"));
        }


・デバッグで起動し、~/Home/Index と、~/Home/Error に何度かアクセスしてみます。

すると、Bugsnag のダッシュボードサイトにて、以下のように表示。

f:id:miso_soup3:20160329233347p:plain

検索も対応。

f:id:miso_soup3:20160329233358p:plain

エラーに対してアクション等。スヌーズ、アサイン、Fix 等が可能。

f:id:miso_soup3:20160329233425p:plain

デフォルトでメール送信になっているようで、以下のようなメールが送信されてきました。

f:id:miso_soup3:20160329233450p:plain

メールは嫌だったので OFF にし、Slack に連携してみました。

f:id:miso_soup3:20160329233514p:plain

f:id:miso_soup3:20160329233520p:plain

f:id:miso_soup3:20160329233524p:plain

ドキュメントはこちら。Documentation - Bugsnag

ちょっとしばらく使ってみようかなと思いました。

ちょっと使ってみて

ASP.NET MVC プロジェクトにて導入してみましたが、いろいろ引っかかる点がありました。できれば対応を進めようと思います。

Global.asax.cs の Application_Error() 内でエラーを送信しようとしましたが、やりたいことができなかったり。(Request情報やInnerExceptionの情報を送信できなかったり。)
既存のライブラリは2つ見つけまして、
・公式の bugsnag/bugsnag-dotnet .NET notifier for Bugsnag
・非公式の danesparza/net-bugsnag .NET Bugsnag notifier library

通知の API の仕様は https://bugsnag.com/docs/notifier-api にあるので、これらを見ながら自分で作った方がよいのかなと思ったり。

また、StackTrace が空だとエラーとして追加してくれない?
Metadata として任意の情報も送信できるのですが、検索には対応していない?

いろいろ確認中です。