.NET Framework의 Raygun 제공 업체
다음 프레임 워크와 함께 구축 된 프로젝트가 지원됩니다.
위의 프레임 워크 중 하나를 사용하는 프로젝트에 Nuget 패키지를 설치하면 올바른 어셈블리가 참조됩니다.
Xamarin의 경우 Raygun4xamarin.forms 또는 Mindscape.raygun4net.xamarin.android & mindscape.raygun4net.xamarin.ios.udifed 패키지를 추가하는 것이 좋습니다.
.NET Core 및 .NET 버전 5.0 이상의 경우 Mindscape.raygun4net.netCore 패키지를 사용하는 것이 좋습니다.
dotnet add package Mindscape.Raygun4Net이 공급자 사용 방법에 대한 자세한 지침은 Raygun Docs를 참조하십시오.
Raygun 서비스에 예외를 보낼 때는 메시지를 응용 프로그램에 매핑하려면 APP 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 Middleware를 구성하여 트리거 된 예외를 처리하고 처리되지 않은 예외를 자동으로 보냅니다.
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 파일에서 <configuration> 요소에 중첩되어야하는 <configSections> 요소를 찾거나 추가하고 다음 항목을 추가하십시오.
<section name="RaygunSettings" type="Mindscape.Raygun4Net.RaygunSettings, Mindscape.Raygun4Net"/>
그런 다음 configSections 태그 뒤에 다음 줄을 추가하여 참조하십시오.
< RaygunSettings apikey = " YOUR_APP_API_KEY " />이제 Raygun을 설정하여 처리되지 않은 예외를 자동으로 보내거나 수동으로 예외를 보낼 수 있습니다.
처리되지 않은 예외를 자동으로 보내려면 web.config의 <configuration> 요소 내의 Raygun HTTP 모듈을 사용하십시오. 이것은 어떤 버전의 II를 사용하고 있는지에 따라 약간 다르게 수행됩니다. 의심스러운 경우 둘 다 시도하십시오.
< 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의 새 인스턴스를 작성하여 예외 보고서를 수동으로 보낼 수도 있고 Send 또는 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 I I Be Teapot 응답 코드를 반환하는 오류를 제외하려면 아래 구성을 사용할 수 있습니다.
< RaygunSettings apikey = " YOUR_APP_API_KEY " excludeHttpStatusCodes = " 418 " />로컬 원점에서 유래 한 오류를 제외하십시오
이 부울과 HTTP 모듈은 요청이 로컬 원산지에서 비롯된 경우 Raygun에 오류를 보내지 않습니다. 즉, Local Debug/Development가 Web.config Transform에 의지하지 않고 Raygun에 알리는 것을 방지하는 방법입니다.
< RaygunSettings apikey = " YOUR_APP_API_KEY " excludeErrorsFromLocal = " true " />민감한 요청 데이터를 제거하십시오
HTTP 요청에 Raygun으로 전송되는 것을 방지하려는 민감한 데이터가있는 경우 제거 할 수있는 키 (이름) 목록을 제공 할 수 있습니다. 무시할 키는 web.config의 raygunsettings 태그에 지정할 수 있습니다 (또는 코드로 설정하는 경우 Raygunclient의 동등한 메소드를 사용할 수 있음). 사용 가능한 옵션은 다음과 같습니다.
이것들은 무시할 쉼표로 분리 된 키 목록으로 설정할 수 있습니다. 옵션을 *로 설정하면 모든 키가 Raygun으로 전송되지 않음 을 나타냅니다. 키의 전, 후 또는 양쪽 끝에 * 배치는 각각 끝을 수행하거나 시작하거나 작동합니다. 예를 들어, ingoreformfieldNames = "*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의 인스턴스를 만듭니다. 이벤트 핸들러를 응용 프로그램의 DispatcherUnHandleDexception 이벤트에 첨부하십시오. 이벤트 핸들러에서 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를 사용하여 정적 인스턴스를 얻을 수 있습니다. 이는 메시지를 수동으로 전송하는 데 사용할 수 있으며 (보내기 메소드를 통해) 사용자 ID 문자열과 같은 옵션을 변경하는 데 사용할 수 있습니다.
이 시점에서 처리되지 않은 예외를 포착하기 위해 WinRT에서 사용 가능한 옵션은보다 성숙한 .NET 프레임 워크의 옵션에 비해 더 제한적입니다. 유효하지 않은 XAML이 구문 분석되면 기본 UI 스레드에서 발생하는 다른 런타임 예외 외에도 핸들이 발생하지 않은 이벤트가 제기됩니다. 많은 오류가 이런 식으로 픽업되어 Raygun에게 전송 될 수 있지만,이 예외 처리기는 다른 사람들이 놓칠 것입니다. 특히 백그라운드 스레드에서 실행되는 비동기 코드 또는 작업에는 예외가 발생하지 않습니다.
이 문제에 대한 해결 방법은 wrap () 메소드와 함께 제공됩니다. 이를 통해 실행하려는 코드를 Raygun 클라이언트의 인스턴스로 전달할 수 있습니다. 간단히 시도하는 트리 캐치 블록으로 둘러싸여 있습니다. 당신이 전달하는 방법이 예외를 던지면 이것은 Raygun에게 전송되며 예외는 다시 발생합니다. 두 개의 과부하가 가능합니다. 하나는 void를 반환하는 메소드이고 다른 하나는 객체를 반환하는 메소드입니다.
또 다른 옵션은 Fody 라이브러리와 Asyncerrorhandler 확장을 사용하는 것입니다. 이것은 자동으로 비동기 예외를 포착하여 선택한 핸들러에게 전달합니다 (위와 같이 Raygun으로 전송). 여기에서 설치 지침을 참조한 다음 사용 방법은 샘플 프로젝트를 확인하십시오.
애플리케이션의 기본/입력 활동에서 앱 API 키를 사용하여 정적 raygunclient.attach 메소드를 사용하십시오. 첨부 메소드에 대한 과부하가있어 사용자 식별 문자열을 전달할 수 있으며 Raygun 대시 보드에서 영향을받는 사용자를 추적하는 데 유용합니다.
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;첨부 방법을 호출 한 후 언제든지 Raygunclient.current를 사용하여 정적 인스턴스를 얻을 수 있습니다. 이것은 메시지를 수동으로 전송하거나 사용자 ID 문자열과 같은 옵션을 변경하는 데 사용할 수 있습니다.
응용 프로그램의 주요 진입 점에서 앱 API 키를 사용하여 정적 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 오류보고를 활성화하는 것입니다. 두 번째 부울 매개 변수는 일부 기본 신호 중 일부를 납치 할 것인지의 여부입니다. 이는 시도/캐치 블록 내에서 NULL 참조 예외가 응용 프로그램을 충돌시킬 수있는 잘 알려진 iOS 충돌 리포터 문제를 해결하기위한 것입니다. 두 번째 부울 매개 변수를 true로 설정하면 관리자 코드는 Sigbus 및 Sigsegv iOS 신호를 인계하여 NULL 참조 문제를 해결합니다. 그러나이를 수행하면 Sigbus 및 Sigsegv 기본 오류가 감지되는 것을 방해합니다. 그렇기 때문에 우리가 이것을 옵션으로 제공하는 이유입니다. 따라서 시도/캐치 블록 내에서 발생하는 NULL 참조 예외에 문제가없고 알릴 수있는 기본 오류를 최대화 한 다음 두 번째 부울 매개 변수를 False로 설정하십시오.
첨부 방법을 호출 한 후 언제든지 Raygunclient.current를 사용하여 정적 인스턴스를 얻을 수 있습니다. 이것은 메시지를 수동으로 전송하거나 사용자 ID 문자열과 같은 옵션을 변경하는 데 사용할 수 있습니다.
응용 프로그램의 주요 진입 점에서 앱 API 키를 사용하여 정적 RayGunclient.attach 메소드를 사용하십시오.
static void Main ( string [ ] args )
{
RaygunClient . Attach ( "YOUR_APP_API_KEY" ) ;
NSApplication . Init ( ) ;
NSApplication . Main ( args ) ;
}첨부 방법을 호출 한 후 언제든지 Raygunclient.current를 사용하여 정적 인스턴스를 얻을 수 있습니다. 이것은 메시지를 수동으로 전송하거나 사용자 ID 문자열과 같은 옵션을 변경하는 데 사용할 수 있습니다.
RaygunClient 인스턴스에서 이벤트 핸들러를 SendingMessage 이벤트에 첨부하십시오. 이 이벤트 핸들러는 Raygunclient가 자동으로 또는 수동으로 예외를 보내기 직전에 호출됩니다. 이벤트 인수는 전송 될 Raygunmessage 객체를 제공합니다. 이 이벤트 핸들러의 한 가지 사용은 Raygunmessage에 대한 정보를 추가하거나 수정하는 것입니다. 이 방법에 대한 또 다른 용도는 Raygun으로 보내고 싶지 않은 예외를 식별하는 것입니다. 그렇다면 e.cancel = true를 보내기를 취소하도록 설정하십시오.
그룹에 의해 선호하는 귀중한 내부 예외를 감싸는 일반적인 외부 예외가있는 경우 다중 매개 변수 메소드를 사용하여이를 지정할 수 있습니다.
raygunClient . AddWrapperExceptions ( typeof ( TargetInvocationException ) ) ;이 경우 TargetInVocationException이 발생하면 제거되어 원인이었던 실제 innerexception으로 대체됩니다. httpunhandledException 및 TargetInVocationException은 이미 래퍼 예외 목록에 추가되었습니다. 수동으로 추가 할 필요가 없습니다. 이 방법은 고유 한 사용자 정의 래퍼 예외가 있거나 프레임 워크가 자체 래퍼를 사용하여 예외를 던지는 경우 유용합니다.
raygunclient에는 User 라는 이름의 속성이 있으며 현재 사용자의 ID로 설정할 수 있습니다. 이를 통해 Raygun 대시 보드의 각 오류에 대해 영향을받는 사용자 수를 볼 수 있습니다.
사용자에 대한 자세한 정보 (및 출시 될 때 새로운 영향을받는 사용자보고 기능을 사용하는 기능)를 원한다면 RayGunclient의 UserInfo 속성을 새로운 RayGunidifierMessage 객체로 설정할 수 있습니다. 이 클래스에는 충돌을 경험 한 사용자를 식별하는 데 도움이되는 여러 속성이 있습니다.
이 기능을 사용할 때 회사가 따르는 개인 정보 보호 정책을 준수하십시오.
필요한 필드는 식별자입니다.
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가 양의 정수 인 형식으로)을 설정하여 그렇게 할 수 있습니다.
예외를 수동으로 보낼 때, 임의의 태그 목록 (문자열 배열)과 사용자 정의 데이터 모음 (모든 개체 사전)을 보낼 수도 있습니다. 이것은 다양한 Send 및 SendInbackground 메소드 오버로드를 사용하여 수행 할 수 있습니다.
Raygun4Net 제공 업체는 Raygun API에 메시지를 보낼 때 기본 Windows 프록시 설정 (Internet Explorer의 연결 탭 또는 Web.config)을 사용합니다. 프록시가 인증 자격 증명이 필요한 경우 Raygunclient를 인스턴스화 한 후 ProxyCredentials 속성을 설정하여이를 제공 한 다음이를 사용하여 나중에 보낼 수 있습니다.
var raygunClient = new RaygunClient ( )
{
ProxyCredentials = new NetworkCredential ( "user" , "password" )
} ; 원하는 경우 자신의 그룹화 키를 제공 할 수 있습니다. 오류가 올바르게 그룹화되지 않는 문제가있는 것만 권장합니다.
Raygunclient 인스턴스에서 이벤트 핸들러를 CustomGroupingKey 이벤트에 첨부하십시오. 이 이벤트 핸들러는 Raygun이 Raygunmessage 객체를 구축 한 후에 호출되지만 SendingMessage 이벤트가 호출되기 전에 호출됩니다. 이벤트 인수는 전송 될 Raygunmessage 객체와이를 트리거 한 원래의 예외를 제공합니다. 원하는 것을 사용하여 키를 생성하고 이벤트 인수에서 CustomGroupingKey 속성으로 설정할 수 있습니다. NULL 또는 빈 문자열로 설정하면 Raygun이 그룹화 할 예외가 남아 있으면 Raygun이 해당 키로 보낸 다른 예외로 그룹화하게됩니다.
키는 최대 길이가 100입니다.
<RaygunSettings apikey="[Raygun4Net api key goes here]" throwOnError="true"/>