構文
目的-c
recordError:(NSError* _Nonnull)error attributes:(NSDictionary* _Nullable)attributes;
迅速 [#swift]
NewRelic.recordError(error: $Error, map $eventAttributes);
説明 [#description]
クラッシュ分析にはrecordError
API呼び出しを使用できます。キャプチャされたイベントを確認して、アプリがエラーをスローする頻度と条件を理解するのに役立ててください。追加したカスタム属性に加えて、イベントにはセッション属性も関連付けられます。
この API は、エラーのインスタンスとオプションの属性辞書を受け取り、 recordHandledException
イベントを作成します。 イベント データは、 Handled exceptionsページやCrash eventsトレイルなどの UI で表示できます。 このデータを NRQL でクエリし、New Relic ダッシュボードでグラフ化することもできます。
パラメーター [#parameters]
目的-c
パラメータ | タイプ | 説明 |
---|---|---|
|
| 必要。記録される例外。 |
|
| 任意です。コンテキストを与える属性の辞書。 |
例 [#examples]
Objective-C
単純なエラーを記録する例を次に示します。
@try { @throw [NSException exceptionWithName:@"versionException" reason:@"App version no longer supported" userInfo:nil];} @catch (NSException* e) { [NewRelic recordHandledException:e];}
次に、辞書を使用してエラーを記録する別の例を示します。
[NSJSONSerialization JSONObjectWithData:data options:opt error:error];if (error) { [NewRelic recordError:error withAttributes:@{@"int" : @1, @"Test Group" : @"A | B"}];}
迅速 [#swift]
単純なエラーを記録する例を次に示します。
do { try method()} catch { NewRelic.recordError(error)}
次に、辞書を使用してエラーを記録する別の例を示します。
do { try method()} catch { NewRelic.recordError(error, attributes: [ "int" : 1, "Test Group" : "A | B" ])}
構文
recordError(options: { name: string; message: string; stack: string; isFatal: boolean; }) => void
説明 [#description]
Ionic Capacitor の JavaScript/TypeScript エラーを記録します。このメソッドをフレームワークのグローバル エラー ハンドラーに必ず追加してください。
パラメーター [#parameters]
目的-c
パラメータ | タイプ | 説明 |
---|---|---|
|
| 必要。エラーの詳細を含むオブジェクト。 |
例 [#example]
try { throw new Error('Example error message');} catch (e: any) { NewRelicCapacitorPlugin.recordError({ name: e.name, message: e.message, stack: e.stack, isFatal: false, });}
構文
recordError(err: Error) : void;
説明 [#description]
Cordova の JavaScript エラーを記録します。使用しているフレームワークのエラー ハンドラーに必ずこのメソッドを追加してください。
例 [#examples]
角度のある
Angular 2 以降では、エラーを処理するための ErrorHandler クラスが公開されています。次のようにこのクラスを拡張することで、New Relic を実装できます。
import { ErrorHandler, Injectable } from '@angular/core';import { NewRelic } from "@awesome-cordova-plugins/newrelic";
@Injectable()export class GlobalErrorHandler extends ErrorHandler { constructor() { super(); } handleError(error: any): void { NewRelic.recordError(error); super.handleError(error); }}
次に、app.module.ts にプロバイダーのオーバーライドをリストすることで、Angular 2 にこの新しいエラー ハンドラーを知らせる必要があります。
@NgModule({ declarations: [AppComponent], imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule,HttpClientModule], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },{provide: ErrorHandler, useClass: GlobalErrorHandler}], bootstrap: [AppComponent],})
対応
React 16 以降には、子コンポーネントからバブルアップしたエラーをキャッチするエラー境界コンポーネントが追加されました。これらは、エラーを追跡したり、New Relic にエラーを報告したりするのに非常に役立ちます。
import React, { Component } from "react";import { NewRelic } from "@awesome-cordova-plugins/newrelic";
export class ErrorBoundary extends Component { componentDidCatch(error, errorInfo) { if (errorInfo && errorInfo.componentStack) { // Optional line to print out the component stack for debugging. console.log(errorInfo.componentStack); }
NewRelic.recordError(error); this.setState({ error }); }
render() { // Render error messages or other components here. }}
戻ってきた
Redux ミドルウェアを 作成してストアに適用できます。これにより、エラーを New Relic に報告できるようになります。
import { NewRelic } from "@awesome-cordova-plugins/newrelic";
const NewRelicLogger = store => next => action => { try { // You can log every action as a custom event NewRelic.recordCustomEvent("eventType", "eventName", action); return next(action) } catch (err) {
// NewRelic.recordBreadcrumb("NewRelicLogger error", store.getState());
// Record the JS error to New Relic NewRelic.recordError(err); }}
export default NewRelicLogger;
ストアの作成時にミドルウェアが適用されていることを確認してください。
import { createStore, applyMiddleware } from "redux"import NewRelicLogger from "./middleware/NewRelicLogger"
const store = createStore(todoApp, applyMiddleware(NewRelicLogger));
ヴュー
Vue には、ネイティブ JavaScript エラーを報告し、Vue インスタンスに渡すグローバル エラー ハンドラーがあります。このハンドラーは、New Relic にエラーを報告するのに役立ちます。
import { NewRelic } from "@awesome-cordova-plugins/newrelic";
Vue.config.errorHandler = (err, vm, info) => { // Record properties passed to the component if there are any if(vm.$options.propsData) { NewRelic.recordBreadcrumb("Props passed to component", vm.$options.propsData); }
// Get the lifecycle hook, if present let lifecycleHookInfo = 'none'; if (info){ lifecycleHookInfo = info; }
// Record a breadcrumb with more details such as component name and lifecycle hook NewRelic.recordBreadcrumb("Vue Error", { 'componentName': vm.$options.name, 'lifecycleHook': lifecycleHookInfo })
// Record the JS error to New Relic NewRelic.recordError(error);}
構文
recordError(error, StackTrace.current, attributes: attributes);
説明 [#description]
カスタム属性を指定した recordError
メソッドを使用して、致命的でない例外を登録できます。
例 [#example]
try { some_code_that_throws_error();} catch (ex) { NewrelicMobile.instance .recordError(error, StackTrace.current, attributes: attributes);}
構文
recordError(e: string|error): void;
説明 [#description]
React Native の JavaScript エラーを記録します。
例 [#example]
try { var foo = {}; foo.bar();} catch(e) { NewRelic.recordError(e);}
構文
recordError(FString errorMessage,TMap <FString, FString> errorAttributes);
説明 [#description]
マップを使用して Unreal のエラーを記録します。
パラメータ | タイプ | 説明 |
---|---|---|
|
| 必要。記録される例外。 |
|
| オプション。例外に関連付けられる属性のマップ。 |
例 [#example]
#include "NewRelicBPLibrary.h"
TMap<FString, FString> errorsMap;errorsMap.Add("place", TEXT("Robots"));errorsMap.Add("user", TEXT("Nisarg"));UNewRelicBPLibrary::recordError(TEXT("Error Message"), errorsMap);