.NETフレームワークのRaygunプロバイダー
次のフレームワークで構築されたプロジェクトがサポートされています。
上記のフレームワークのいずれかを使用するプロジェクトにNUGETパッケージをインストールすると、正しいアセンブリが参照されます。
Xamarinについては、Raygun4xamarin.FormsまたはMindscape.raygun4net.xamarin.android&mindscape.raygun4net.xamarin.ios.iosifiedパッケージのいずれかを追加することをお勧めします。
.NET Coreおよび.NETバージョン5.0以上の場合、Mindscape.raygun4net.netcoreパッケージを使用することをお勧めします。
dotnet add package Mindscape.Raygun4Netこのプロバイダーの使用方法については、より詳細な手順については、Raygun Docsを参照してください。
Raygunサービスに例外を送信する場合、アプリAPIキーがメッセージをアプリケーションにマッピングする必要があります。
Raygunダッシュボードに新しいアプリケーションを作成すると、アプリAPIキーが[指示]ページ内に表示されます。また、Raygunダッシュボードのサイドバーにある[アプリケーション設定]ボタンをクリックして、APIキーを見つけることもできます。
メインクラスは、Mindscape.raygun4netネームスペースにあります。
Raygun4Netプロバイダーには、多くの.NETフレームワークのサポートが含まれています。下にスクロールして、アプリケーションの種類にRaygunを使用することに関する情報を見つけます。
バージョン5.0.0の時点で、ASP.NETサポートは新しいNugetパッケージに移動されました。 ASP.NETプロジェクトがある場合は、Raygun4Net Nugetパッケージをアンインストールし、MindScape.raygun4net.aspnetcore Nugetパッケージをインストールしてください。
パッケージがインストールされたら、次のコードをappsettings.jsonに追加します(別のタイプの構成を使用している場合は、そこに追加します):
"RaygunSettings" : {
"ApiKey" : " YOUR_APP_API_KEY "
}Raygunミドルウェアを構成して、トリガーされた例外を処理し、未処理の例外を自動的に送信します。
Program.csで:
using Mindscape.Raygun4Net.AspNetCore;ステートメントを使用してください。builder.Services.AddRaygun(builder.Configuration); 。app.UseRaygun();他の例外ハンドリング方法の後、 app.UseDeveloperExceptionPage()またはapp.UseExceptionHandler("/Home/Error") 。 using Mindscape . Raygun4Net . AspNetCore ; var builder = WebApplication . CreateBuilder ( args ) ;
// Add services to the container.
builder . Services . AddRaygun ( builder . Configuration ) ;
/*The rest of your builder setup*/
var app = builder . Build ( ) ;
// Configure the HTTP request pipeline.
if ( ! app . Environment . IsDevelopment ( ) )
{
app . UseExceptionHandler ( "/Error" ) ;
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app . UseHsts ( ) ;
}
app . MapGet ( "/throw" , ( Func < string > ) ( ( ) => throw new Exception ( "Exception in request pipeline" ) ) ) ;
app . UseRaygun ( ) ;
/*The rest of your app setup*/上記のセットアップにより、すべての未解決の例外がRaygunアカウントに送信され、エラー監視およびクラッシュレポートデータをすべて簡単に表示できます。
Raygunの摂取ノードには、 .NET 3.5以前を使用している場合は、TLS 1.2またはTLS 1.3が必要です。アプリケーションでこれらのプロトコルを有効にしてOSにパッチを当てる必要があります。
MicrosoftのTLSトラブルシューティングガイドをご覧ください。
アプリケーションの起動コードでプロトコルプロパティを更新します。
protected void Application_Start ( )
{
// Enable TLS 1.2 and TLS 1.3
ServicePointManager . SecurityProtocol |= ( ( SecurityProtocolType ) 3072 /*TLS 1.2*/ | ( SecurityProtocolType ) 12288 /*TLS 1.3*/ ) ;
}web.configファイルで、 <configSections>要素<configuration>見つけたり追加したりします。
<section name="RaygunSettings" type="Mindscape.Raygun4Net.RaygunSettings, Mindscape.Raygun4Net"/>
次に、 configSectionsタグの後に次の行を追加して参照します。
< RaygunSettings apikey = " YOUR_APP_API_KEY " />これで、Raygunをセットアップして、未処理の例外を自動的に送信するか、/および例外を手動で送信できます。
ハンドルの例外を自動的に送信するには、web.configの<configuration>要素内のRaygun HTTPモジュールを使用します。これは、使用しているIISのバージョンに応じて、わずかに異なって行われます。疑わしい場合は、両方を試してみてください。
< system .web>
< httpModules >
< add name = " RaygunErrorModule " type = " Mindscape.Raygun4Net.RaygunHttpModule " />
</ httpModules >
</ system .web> IIS 7.0の場合、 system.webServerを使用します
< system .webServer>
< modules >
< add name = " RaygunErrorModule " type = " Mindscape.Raygun4Net.RaygunHttpModule " />
</ modules >
</ system .webServer>コードのどこにでも、RayGunClientの新しいインスタンスを作成して、送信またはSendinbackgroundメソッドのいずれかを呼び出すだけで、例外レポートを手動で送信することもできます。これは、トライ/キャッチブロックでキャッチされた例外を送信するために最も一般的に使用されます。
try
{
}
catch ( Exception e )
{
new RaygunClient ( ) . SendInBackground ( e ) ;
}または、上記の自動セットアップを使用するのではなく、独自のハンドラーに例外を送信します。
protected void Application_Error ( )
{
var exception = Server . GetLastError ( ) ;
new RaygunClient ( ) . Send ( exception ) ;
} HTTPステータスコードでエラーを除外します
HTTPモジュールを使用する場合、構成で無視するステータスコードのコンマ分離リストを提供することにより、HTTPステータスコードでエラーを除外できます。たとえば、I'm Teapot Responseコードを返すエラーを除外したい場合は、以下の構成を使用できます。
< RaygunSettings apikey = " YOUR_APP_API_KEY " excludeHttpStatusCodes = " 418 " />ローカル起源に起因するエラーを除外します
このブール値を切り替えると、HTTPモジュールは、リクエストがローカルオリジンから発信された場合、Raygunにエラーを送信しません。つまり、web.configの変換に頼らずにローカルデバッグ/開発がレイガンに通知するのを防ぐ方法。
< RaygunSettings apikey = " YOUR_APP_API_KEY " excludeErrorsFromLocal = " true " />機密リクエストデータを削除します
Raygunに送信されるのを防ぎたいというHTTPリクエストに機密データがある場合は、削除する可能性のあるキー(名前)のリストを提供できます。無視するキーは、web.configのraygunsettingsタグで指定できます(または、コードで物事を設定する場合は、RayGunclientで同等のメソッドを使用できます)。利用可能なオプションは次のとおりです。
これらは、無視するキーのコンマ分離リストに設定できます。 *としてオプションを設定すると、すべてのキーがRaygunに送信されないことを示します。キーの前、後、または両端に配置 *して、それぞれ操作から、操作を行うか、それぞれ操作を含む端を実行します。たとえば、IngroreformfieldNames = "*password*"により、Raygunは、名前のどこにでも「パスワード」を含むすべてのフォームフィールドを無視します。これらのオプションは、ケースに敏感ではありません。
HTTPモジュールにカスタムRayGunClientを提供します
HTTPモジュールを使用して例外を自動的に送信するRaygunをセットアップする場合、このファイルの最後に説明されているオプション機能の一部を使用するために、HTTPモジュールにカスタムRayGunClientインスタンスを提供する必要がある場合があります。これを行うには、HTTPアプリケーションを取得して、IrayGunApplicationインターフェイスを実装します。 GeneraterAygunClientメソッドを実装して、新しい(または以前に作成された)RayGunClientインスタンスを返します。 HTTPモジュールは、この方法から返されたRayGunClientを使用して、未処理の例外を送信します。この方法では、必要なRayGunClientインスタンスに追加のオプションをセットアップできます。各機能の詳細については、このファイルの最後に説明します。
バージョン4.0.0の時点で、MVCサポートは新しいNugetパッケージに移動されました。 MVCプロジェクトがある場合は、Raygun4Net Nugetパッケージをアンインストールし、 Mindscape.Raygun4Net.Mvc Nugetパッケージをインストールしてください。
パッケージがインストールされたら、構成に関する手順については、パッケージREADMEを参照してください。
MVCおよびWebAPI Nugetパッケージは、同じプロジェクトに安全にインストールできます。
バージョン4.0.0の時点で、WebAPIサポートは新しいNugetパッケージに移行されました。 WebAPIプロジェクトをお持ちの場合は、Raygun4Net Nugetパッケージをアンインストールして、 Mindscape.Raygun4Net.WebApi Nugetパッケージをインストールしてください。
パッケージがインストールされたら、構成に関する手順については、パッケージREADMEを参照してください。
MVCおよびWebAPI Nugetパッケージは、同じプロジェクトに安全にインストールできます。
コンストラクターにアプリAPIキーを渡すことにより、RayGunClientのインスタンスを作成します。アプリケーションのDispatcherUnnhandleDexceptionイベントにイベントハンドラーを添付します。イベントハンドラーでは、RayGunclient.sendメソッドを使用して例外を送信します。
private RaygunClient _client = new RaygunClient ( "YOUR_APP_API_KEY" ) ;
public App ( )
{
DispatcherUnhandledException += OnDispatcherUnhandledException ;
}
void OnDispatcherUnhandledException ( object sender , DispatcherUnhandledExceptionEventArgs e )
{
_client . Send ( e . Exception ) ;
}コンストラクターにアプリAPIキーを渡すことにより、RayGunClientのインスタンスを作成します。 Application.run(...)を呼び出す前に、イベントハンドラーをApplication.ThreadExceptionイベントに添付します。イベントハンドラーでは、RayGunclient.sendメソッドを使用して例外を送信します。
private static readonly RaygunClient _raygunClient = new RaygunClient ( "YOUR_APP_API_KEY" ) ;
[ STAThread ]
static void Main ( )
{
Application . EnableVisualStyles ( ) ;
Application . SetCompatibleTextRenderingDefault ( false ) ;
Application . ThreadException += new ThreadExceptionEventHandler ( Application_ThreadException ) ;
Application . Run ( new Form1 ( ) ) ;
}
private static void Application_ThreadException ( object sender , ThreadExceptionEventArgs e )
{
_raygunClient . Send ( e . Exception ) ;
}app.xaml.csコンストラクター(またはアプリケーションへのメインエントリポイント)で、APIキーを使用してstatic raygunclient.attachメソッドを呼び出します。
public App ( )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;
}添付メソッドを呼び出した後のいつでも、RayGunclient.currentを使用して静的インスタンスを取得できます。これは、(送信メソッドを介して)メッセージを手動で送信したり、ユーザーIdentity文字列などのオプションを変更するために使用できます。
この時点で、未解決の例外をキャッチするためにWinRTで利用可能なオプションは、より成熟した.NETフレームワークのオプションと比較してより制限されています。メインのUIスレッドで発生する他のランタイムの例外に加えて、無効なXAMLが解析された場合、unhandleDexceptionイベントが発生します。この方法で多くのエラーがピックアップされるため、Raygunに送信することができますが、他のエラーはこの例外ハンドラーによって見逃されます。特に、バックグラウンドスレッドで実行される非同期コードまたはタスクには例外がキャッチされません。
この問題の回避策には、wrap()メソッドが提供されます。これらを使用すると、実行するコードをRaygunクライアントのインスタンスに渡すことができます。トライキャッチブロックに囲まれた単純に呼び出されます。あなたが渡す方法が例外をスローする場合、これはRaygunに送信され、例外が再びスローされます。 2つのオーバーロードが利用可能です。 1つはvoidを返すメソッド、もう1つはオブジェクトを返すメソッド用です。
もう1つのオプションは、FodyライブラリとそのAsyncerrorhandler拡張機能を使用することです。これにより、非同期の例外が自動的にキャッチされ、選択したハンドラーに渡されます(上記のようにRaygunに送信されます)。こちらのインストール手順を参照して、使用方法についてはサンプルプロジェクトをご覧ください。
アプリケーションのメイン/エントリアクティビティでは、APP APIキーを使用してStatic RayGunClient.Attachメソッドを使用します。また、Raygunダッシュボードの影響を受けたユーザーを追跡するのに役立つユーザーIDINTITY文字列を渡すことができるAttachメソッドのオーバーロードもあります。
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;添付メソッドを呼び出した後のいつでも、RayGunclient.currentを使用して静的インスタンスを取得できます。これは、メッセージを手動で送信したり、ユーザーIdentity文字列などのオプションを変更するために使用できます。
アプリケーションのメインエントリポイントで、APP APIキーを使用してStatic RayGunClient.Attachメソッドを使用します。
static void Main ( string [ ] args )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;
UIApplication . Main ( args , null , "AppDelegate" ) ;
}また、ネイティブのiOSクラッシュレポートを有効にできるアタッチメソッド用のオーバーロードもあります。
static void Main ( string [ ] args )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" , true , true ) ;
UIApplication . Main ( args , null , "AppDelegate" ) ;
}最初のブールパラメーターは、単にネイティブのiOSエラーレポートを有効にすることです。 2番目のブールパラメーターは、ネイティブ信号のいくつかをハイジャックするかどうかです。これは、Try/Catchブロック内のNULL参照例外がアプリケーションをクラッシュさせる可能性がある場合、よく知られているiOSクラッシュレポーターの問題を解決するためです。 2番目のブールパラメーターをTrueに設定することにより、管理されたコードは、null参照の問題を解決するSigbusおよびSigsegv iOS信号を引き継ぎます。ただし、これを行うと、SigbusとSigsegvのネイティブエラーが検出されません。つまり、Raygunに送信されません。これがオプションとしてこれを提供する理由です。したがって、Try/Catchブロック内で発生するNULL参照の例外に問題がない場合、通知できるネイティブエラーを最大化してから、2番目のブールパラメーターをFalseに設定します。
添付メソッドを呼び出した後のいつでも、RayGunclient.currentを使用して静的インスタンスを取得できます。これは、メッセージを手動で送信したり、ユーザーIdentity文字列などのオプションを変更するために使用できます。
アプリケーションのメインエントリポイントで、APP APIキーを使用してStatic RayGunClient.Attachメソッドを使用します。
static void Main ( string [ ] args )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;
NSApplication . Init ( ) ;
NSApplication . Main ( args ) ;
}添付メソッドを呼び出した後のいつでも、RayGunclient.currentを使用して静的インスタンスを取得できます。これは、メッセージを手動で送信したり、ユーザーIdentity文字列などのオプションを変更するために使用できます。
RayGunClientインスタンスで、SendingMessageイベントにイベントハンドラーを添付します。このイベントハンドラーは、RayGunclientが例外を送信する直前に呼び出されます - 自動または手動のいずれかです。イベントの議論は、送信されようとしているレイガンメッジオブジェクトを提供します。このイベントハンドラーの1つの用途は、RayGunmessageに関する情報を追加または変更することです。この方法のもう1つの用途は、Raygunに決して送信したくない例外を特定することです。もしそうなら、e.cancel = trueを設定して送信をキャンセルします。
グループ化したい貴重な内部例外をラップする一般的な外部例外がある場合は、マルチパラメーターメソッドを使用してこれらを指定できます。
raygunClient . AddWrapperExceptions ( typeof ( TargetInvocationException ) ) ;この場合、TargetInvocationExceptionが発生した場合、削除され、原因である実際のinrerexceptionに置き換えられます。 httpunhandledexceptionとターゲットインボケーションエクセプトは、すでにラッパー例外リストに追加されていることに注意してください。これらを手動で追加する必要はありません。この方法は、独自のカスタムラッパーの例外がある場合、またはフレームワークが独自のラッパーを使用して例外をスローしている場合に役立ちます。
RayGunClientにUserという名前のプロパティがあり、現在のユーザーのIDになるように設定できます。これにより、Raygunダッシュボードの各エラーについて、影響を受けるユーザーのカウントを確認できます。
ユーザーに関するより詳細な情報(およびリリース時に新しい影響を受けるユーザーレポート機能を使用する機能)が必要な場合は、raygunclientにUserInfoプロパティを新しいraygunidentifiermessageオブジェクトに設定できます。このクラスには、クラッシュを経験したユーザーを識別するのに役立つ多くのプロパティがあります。
この機能を使用するときに、会社が従うプライバシーポリシーを順守してください。
必要な唯一のフィールドは識別子です。
Identifier 、このユーザーのシステムからの一意の識別子です。
IsAnonymous 、ユーザーがログインしている(または識別可能)か、匿名であるかを示すフラグです。匿名のユーザーは、まだ一意の識別子を持つことができます。
ユーザーのメールアドレスEmail 。電子メールアドレスを使用してユーザーを識別する場合は、識別子を電子メールに設定し、この空白のままにしておくと、識別子を電子メールアドレスのように見える場合、電子メールアドレスが指定されていないため、電子メールアドレスとして使用します。
ユーザーのフルネームFullName 。
FirstNameユーザーの最初の(または好みの)名前。
UUIDデバイス識別子。デバイス全体のユーザー、または多くのユーザーにとって壊れているマシンを識別するために使用できます。
raygunClient . User = "[email protected]" ;
// OR
raygunClient . UserInfo = new RaygunIdentifierMessage ( "[email protected]" )
{
IsAnonymous = false ,
FullName = "Robbie Raygun" ,
FirstName = "Robbie"
} ; デフォルトでは、Raygunは各レポートでプロジェクトのアセンブリバージョンを送信します。
独自のカスタムバージョン値を提供する必要がある場合は、RayGunClientのApplicationVersionプロパティを設定して(Xが正の整数であるXXXX形式)を設定することでそうすることができます。
例外を手動で送信する場合、タグの任意のリスト(文字列の配列)とカスタムデータのコレクション(任意のオブジェクトの辞書)を送信することもできます。これは、さまざまな送信およびSendInbackgroundメソッドのオーバーロードを使用して実行できます。
Raygun4Netプロバイダーは、Raygun APIにメッセージを送信する際に、デフォルトのWindowsプロキシ設定(Internet Explorerの接続タブ、またはWeb.Configに設定されています)を使用します。プロキシが認証資格情報を必要とする場合、RayGunClientをインスタンス化した後、 ProxyCredentialsプロパティを設定して、後で送信するために使用することでこれらを提供できます。
var raygunClient = new RaygunClient ( )
{
ProxyCredentials = new NetworkCredential ( "user" , "password" )
} ; 必要に応じて、独自のグループ化キーを提供できます。エラーが適切にグループ化されていないという問題があることのみをお勧めします。
RayGunClientインスタンスで、カスタムGroupingKeyイベントにイベントハンドラーを添付します。このイベントハンドラーは、RaygunがRayGunmessageオブジェクトを構築した後に呼び出されますが、送信マセージイベントが呼び出される前に呼び出されます。イベントの引数は、送信されようとしているレイガンメッジオブジェクトと、それをトリガーした元の例外を提供します。好きなものを使用してキーを生成し、イベント引数でCustomGroupingKeyプロパティによって設定できます。 nullまたは空の文字列に設定すると、例外がレイガンによってグループ化されるようになり、それを何かに設定すると、レイガンはそのキーで送信した他の例外とグループ化します。
キーの最大長は100です。
<RaygunSettings apikey="[Raygun4Net api key goes here]" throwOnError="true"/>