Syntaxe
Objectif-C
recordError:(NSError* _Nonnull)error attributes:(NSDictionary* _Nullable)attributes;Swift [#swift]
NewRelic.recordError(error: $Error, map $eventAttributes);Description [#description]
Vous pouvez utiliser l'appel d'API recordError pour l'analyse des crashs. Passez en revue l’événement capturé pour vous aider à comprendre à quelle fréquence votre application génère des erreurs et dans quelles conditions. En plus de tout attribut personnalisé que vous avez ajouté, l'événement aura également un attribut de session associé.
Cette API prend une instance d'une erreur et un dictionnaire d'attributs facultatif, puis crée un événement recordHandledException. Vous pouvez afficher les données d'événement dans l'interface utilisateur dans des endroits tels que la pageHandled exceptions et le parcoursCrash events . Vous pouvez également interroger ces données avec NRQL et les représenter graphiquement dans les dashboards New Relic.
Paramètres [#parameters]
Objectif-C
paramètres | Type | Description |
|---|---|---|
|
| Requis. L'exception à enregistrer. |
|
| Facultatif. Dictionnaire des attributs qui donnent un contexte. |
Exemples [#examples]
Objective-C
Voici un exemple d'enregistrement d'une erreur simple :
@try { @throw [NSException exceptionWithName:@"versionException" reason:@"App version no longer supported" userInfo:nil];} @catch (NSException* e) { [NewRelic recordHandledException:e];}Voici un autre exemple d’enregistrement d’une erreur avec un dictionnaire :
[NSJSONSerialization JSONObjectWithData:data options:opt error:error];if (error) { [NewRelic recordError:error withAttributes:@{@"int" : @1, @"Test Group" : @"A | B"}];}Swift [#swift]
Voici un exemple d'enregistrement d'une erreur simple :
do { try method()} catch { NewRelic.recordError(error)}Voici un autre exemple d’enregistrement d’une erreur avec un dictionnaire :
do { try method()} catch { NewRelic.recordError(error, attributes: [ "int" : 1, "Test Group" : "A | B" ])}Syntaxe
recordError(options: { name: string; message: string; stack: string; isFatal: boolean; }) => voidDescription [#description]
Enregistre les erreurs JavaScript/TypeScript pour Ionic Capacitor. Assurez-vous d'ajouter cette méthode au gestionnaire d'erreurs global de votre framework.
Paramètres [#parameters]
Objectif-C
paramètres | Type | Description |
|---|---|---|
|
| Requis. Un objet qui contient les détails de l'erreur. |
Exemple [#example]
try { throw new Error('Example error message');} catch (e: any) { NewRelicCapacitorPlugin.recordError({ name: e.name, message: e.message, stack: e.stack, isFatal: false, });}Syntaxe
recordError(err: Error) : void;Description [#description]
Enregistre les erreurs JavaScript pour Cordova. Assurez-vous d’ajouter cette méthode au gestionnaire d’erreurs du framework que vous utilisez.
Exemples [#examples]
Angulaire
Angular 2+ expose une classe ErrorHandler pour gérer les erreurs. Vous pouvez implémenter New Relic en étendant cette classe comme suit :
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); }}Ensuite, vous devrez informer Angular 2 de ce nouveau gestionnaire d'erreurs en répertoriant les remplacements pour le fournisseur dans app.module.ts :
@NgModule({ declarations: [AppComponent], imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule,HttpClientModule], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },{provide: ErrorHandler, useClass: GlobalErrorHandler}], bootstrap: [AppComponent],})React
React 16+ a ajouté des composants de limite d'erreur qui détectent les erreurs qui remontent à partir des composants enfants. Ils sont très utiles pour suivre les erreurs et signaler les erreurs à 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
Vous pouvez créer Redux Middleware et l'appliquer à votre boutique. Cela vous permettra de signaler toute erreur à 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;Assurez-vous que le middleware est appliqué lors de la création de votre boutique :
import { createStore, applyMiddleware } from "redux"import NewRelicLogger from "./middleware/NewRelicLogger"
const store = createStore(todoApp, applyMiddleware(NewRelicLogger));Vue
Vue dispose d'un gestionnaire d'erreurs global qui signale les erreurs JavaScript natives et les transmet à l'instance Vue. Ce gestionnaire sera utile pour signaler les erreurs à 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);}Syntaxe
recordError(error, StackTrace.current, attributes: attributes);Description [#description]
Vous pouvez enregistrer des exceptions non fatales en utilisant la méthode recordError avec l'attribut personnalisé.
Exemple [#example]
try { some_code_that_throws_error();} catch (ex) { NewrelicMobile.instance .recordError(error, StackTrace.current, attributes: attributes);}Syntaxe
recordError(e: string|Error, isFatal?: boolean, attributes?: object): void;Exigences [#react-requirements]
- Agent New Relic React Native installé et configuré.
- Appelez
NewRelic.setJSAppVersion()au début de votre application afin que les erreurs JavaScript puissent être capturées. - L’enregistrement des erreurs en tant qu’événements
MobileJSError, l’argumentisFatal, et l’argumentattributesnécessitent l’agent React Native version 1.9.0 ou supérieure. Les versions antérieures enregistrent ces erreurs en tant qu’événementsMobileHandledException.
Description [#react-description]
Utilisez cet appel pour enregistrer les erreurs JavaScript gérées ou autres erreurs diverses de votre application. Cela est utile lorsque vous avez intercepté et géré une erreur, mais que vous souhaitez tout de même l’identifier sans perturber le fonctionnement de votre application.
Ces erreurs sont enregistrées en tant qu’ événementsMobileJSError . En plus des attributs personnalisés que vous ajoutez, les événements incluent également les attributs de session associés. Vous pouvez afficher ces données dans l’UI , les interroger avec NRQL et les représenter graphiquement dans les dashboards New Relic.
Paramètres [#react-parameters]
paramètres | Type | Description |
|---|---|---|
|
| Obligatoire. L’erreur à enregistrer. |
|
| Facultatif. Si l'erreur est fatale. La valeur par défaut est |
|
| Facultatif. Un objet de paires nom/valeur d’attributs personnalisés qui donnent à l’erreur un contexte supplémentaire. La valeur par défaut est |
Exemples [#react-examples]
Enregistrer une erreur traitée
Voici un exemple d’enregistrement d’une erreur interceptée sans perturber votre application :
try { var foo = {}; foo.bar();} catch (e) { NewRelic.recordError(e);}Enregistrer une erreur à partir d’un rejet de promesse
Les promesses font qu’il est facile d’ignorer les erreurs asynchrones. Cet exemple signale une promesse rejetée à New Relic afin qu’elle ne soit pas ignorée :
fetch('https://api.example.com/data') .then(response => response.json()) .catch(error => { // Report the unhandled rejection to New Relic NewRelic.recordError(error); });Enregistrer une erreur fatale
Passez true comme deuxième argument pour marquer l’erreur comme fatale :
try { criticalOperation();} catch (e) { NewRelic.recordError(e, true);}Enregistrer une erreur avec des attributs personnalisés
Passez un objet d’attributs comme troisième argument pour ajouter du contexte à l’erreur :
try { var foo = {}; foo.bar();} catch (e) { NewRelic.recordError(e, false, { screen: 'Checkout', 'Test Group': 'A | B' });}Syntaxe
recordError(FString errorMessage,TMap <FString, FString> errorAttributes);Description [#description]
Enregistre les erreurs pour Unreal avec les paramètres de carte.
paramètres | Type | Description |
|---|---|---|
|
| Requis. L'exception à enregistrer. |
|
| Facultatif. Une carte d’attribut à associer à l’exception. |
Exemple [#example]
#include "NewRelicBPLibrary.h"
TMap<FString, FString> errorsMap;errorsMap.Add("place", TEXT("Robots"));errorsMap.Add("user", TEXT("Nisarg"));UNewRelicBPLibrary::recordError(TEXT("Error Message"), errorsMap);