Sintaxe
Objetivo-c
recordError:(NSError* _Nonnull)error attributes:(NSDictionary* _Nullable)attributes;Swift [#swift]
NewRelic.recordError(error: $Error, map $eventAttributes);Descrição [#description]
Você pode usar a chamada de API recordError para análise de falhas. Revise o evento capturado para ajudar você a entender com que frequência seu aplicativo gera erros e sob quais condições. Além de qualquer atributo personalizado que você adicionou, o evento também terá sessão associada atributo.
Essa API pega uma instância de um erro e um dicionário de atributo opcional e cria um evento recordHandledException . Você pode visualizar dados de eventos na interface do usuário em locais como a páginaHandled exceptions e a trilhaCrash events . Você também pode consultar esses dados com NRQL e mapeá-los no painel do New Relic.
Parâmetro [#parameters]
Objetivo-c
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Obrigatório. A exceção a ser registrada. |
|
| Opcional. Dicionário de atributo que contextualiza. |
Exemplos [#examples]
Objective-C
Aqui está um exemplo de registro de um erro simples:
@try { @throw [NSException exceptionWithName:@"versionException" reason:@"App version no longer supported" userInfo:nil];} @catch (NSException* e) { [NewRelic recordHandledException:e];}Aqui está outro exemplo de registro de um erro com um dicionário:
[NSJSONSerialization JSONObjectWithData:data options:opt error:error];if (error) { [NewRelic recordError:error withAttributes:@{@"int" : @1, @"Test Group" : @"A | B"}];}Swift [#swift]
Aqui está um exemplo de registro de um erro simples:
do { try method()} catch { NewRelic.recordError(error)}Aqui está outro exemplo de registro de um erro com um dicionário:
do { try method()} catch { NewRelic.recordError(error, attributes: [ "int" : 1, "Test Group" : "A | B" ])}Sintaxe
recordError(options: { name: string; message: string; stack: string; isFatal: boolean; }) => voidDescrição [#description]
Registra erros de JavaScript/TypeScript para Ionic Capacitor. Certifique-se de adicionar este método ao manipulador de erros global da sua framework.
Parâmetro [#parameters]
Objetivo-c
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Obrigatório. Um objeto que contém os detalhes do erro. |
Exemplo [#example]
try { throw new Error('Example error message');} catch (e: any) { NewRelicCapacitorPlugin.recordError({ name: e.name, message: e.message, stack: e.stack, isFatal: false, });}Sintaxe
recordError(err: Error) : void;Descrição [#description]
Registra erros de JavaScript para Cordova. Certifique-se de adicionar este método ao manipulador de erros da framework que você está usando.
Exemplos [#examples]
Angular
Angular 2+ expõe uma classe ErrorHandler para tratar erros. Você pode implementar o New Relic estendendo esta classe da seguinte maneira:
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); }}Então, você precisará informar o Angular 2 sobre esse novo manipulador de erros listando substituições para o provedor em app.module.ts:
@NgModule({ declarations: [AppComponent], imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule,HttpClientModule], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },{provide: ErrorHandler, useClass: GlobalErrorHandler}], bootstrap: [AppComponent],})Reagir
O React 16+ adicionou componentes de limite de erro que capturam erros que surgem de componentes filhos. Eles são muito úteis para rastrear erros e reportar erros à 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. }}Restaurado
Você pode criar Redux Middleware e aplicá-lo em sua loja. Isso permitirá que você relate quaisquer erros à 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;Certifique-se de que o middleware seja aplicado ao criar sua loja:
import { createStore, applyMiddleware } from "redux"import NewRelicLogger from "./middleware/NewRelicLogger"
const store = createStore(todoApp, applyMiddleware(NewRelicLogger));Vista
O Vue possui um manipulador de erros global que relata erros de JavaScript nativos e passa na instância do Vue. Este manipulador será útil para relatar erros ao 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);}Sintaxe
recordError(error, StackTrace.current, attributes: attributes);Descrição [#description]
Você pode registrar exceções não fatais usando o método recordError com atributo personalizado.
Exemplo [#example]
try { some_code_that_throws_error();} catch (ex) { NewrelicMobile.instance .recordError(error, StackTrace.current, attributes: attributes);}Sintaxe
recordError(e: string|Error, isFatal?: boolean, attributes?: object): void;Requisitos [#react-requirements]
- Agente New Relic React Native instalado e configurado.
- Chamar
NewRelic.setJSAppVersion()no início do aplicativo para que os erros de JavaScript possam ser capturados. - A gravação de erros como eventos
MobileJSError, o argumentoisFatale o argumentoattributesexigem a versão 1.9.0 ou superior do agente React Native. Versões anteriores gravam esses erros como eventosMobileHandledException.
Descrição [#react-description]
Use esta chamada para registrar os erros de JavaScript tratados ou outros erros diversos do seu aplicativo. Isso é útil quando um erro foi capturado e tratado, mas ainda se deseja identificá-lo sem interromper a operação do seu aplicativo.
Esses erros são registrados como eventosMobileJSError . Além de quaisquer atributos personalizados adicionados, os eventos também incluem atributos de sessão associados. É possível visualizar esses dados na interface, consultá-los com NRQL e exibi-los em gráficos nos dashboards do New Relic.
Parâmetro [#react-parameters]
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Obrigatório. O erro a ser registrado. |
|
| Opcional. Se o erro é fatal. O padrão é |
|
| Opcional. Um objeto de pares de nome/valor de atributos personalizados que fornecem contexto adicional ao erro. O padrão é |
Exemplos [#react-examples]
Gravar um erro tratado
Aqui está um exemplo de gravação de um erro detectado sem interromper o aplicativo:
try { var foo = {}; foo.bar();} catch (e) { NewRelic.recordError(e);}Registrar um erro de uma rejeição de promessa
As promises tornam fácil ignorar erros assíncronos. Este exemplo relata uma promise rejeitada à New Relic para que não seja perdida:
fetch('https://api.example.com/data') .then(response => response.json()) .catch(error => { // Report the unhandled rejection to New Relic NewRelic.recordError(error); });Gravar um erro fatal
Passar true como o segundo argumento para marcar o erro como fatal:
try { criticalOperation();} catch (e) { NewRelic.recordError(e, true);}Gravar um erro com atributos personalizados
Passar um objeto de atributos como o terceiro argumento para adicionar contexto ao erro:
try { var foo = {}; foo.bar();} catch (e) { NewRelic.recordError(e, false, { screen: 'Checkout', 'Test Group': 'A | B' });}Sintaxe
recordError(FString errorMessage,TMap <FString, FString> errorAttributes);Descrição [#description]
Registra erros para Unreal com Map parâmetro .
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| Obrigatório. A exceção a ser registrada. |
|
| Opcional. Um mapa de atributo a ser associado à exceção. |
Exemplo [#example]
#include "NewRelicBPLibrary.h"
TMap<FString, FString> errorsMap;errorsMap.Add("place", TEXT("Robots"));errorsMap.Add("user", TEXT("Nisarg"));UNewRelicBPLibrary::recordError(TEXT("Error Message"), errorsMap);