Sentry-javascript: Sentry.captureException рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╕рдВрддрд░реА рдХреЛ рдШрдЯрдирд╛ рднреЗрдЬрддрд╛ рд╣реИ (рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реИрдореНрдмреНрдбрд╛)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рдлрд╝рд░ре░ 2019  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: getsentry/sentry-javascript

рдкреИрдХреЗрдЬ + рд╕рдВрд╕реНрдХрд░рдг

@sentry/node

рд╕рдВрд╕реНрдХрд░рдг:

4.6.3

рд╡рд┐рд╡рд░рдг

рдореИрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдирдП рд╕рдВрддрд░реА рдПрд╕рдбреАрдХреЗ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдпрд╛рд╕-рдкрдХрдбрд╝ рд╣реИ, рдЬреЛ рдХреИрдкреНрдЪрд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╣ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ (рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛)ред

Sentry.init({
  dsn: process.env.sentryUrl,
  environment: process.env.NODE_ENV,
  // debugging issue where we only get an event once
  beforeSend: (event, _) => { console.log(event.exception); return event }
});

async function wrapper(...) {
   try {
     handler(...)
   } catch(error) {
      Sentry.configureScope(scope => {
        scope.setTag("test", "Hello, world")
      })

      const eventId = Sentry.captureException(error)
      // debugging, log event id to see if captureException works
      console.log(eventId)

      const flushResult = await Sentry.flush(1000)
      console.log(flushResult) // see if flush succeeded
   }
}

рдореИрдВрдиреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреАред рдЬрдм рдореИрдВ рдкрд╣рд▓рд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдВрддрд░реА рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдЕрдиреБрд░реЛрдз рдкрд░, рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЬрдм рдореИрдВ CloudWatch рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдпрд╣реА рдорд┐рд▓рддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реА рд╣реИрдВред

рдкрд╣рд▓рд╛ рдЕрдиреБрд░реЛрдз:

/// the eventId from captureException
2019-02-26T13:47:22.584Z: 8cf83e38081a4672841a6f795ce8105a 
/// the middleware defined in Sentry.init
2019-02-26T13:47:23.153Z: { values: [ { stacktrace: [Object], type: 'Error', value: 'This is an error' } ] } 
/// result of Sentry.flush
2019-02-26T13:47:23.294Z: true 

рджреВрд╕рд░рд╛ рдирд┐рд╡реЗрджрди:

/// the eventId from captureException
2019-02-26T13:47:24.761Z fbc2c8b2a4d5447380a0f92dd87896f6
/// result of Sentry.flush
2019-02-26T13:47:24.963Z: true 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рджреВрд╕рд░реЗ рдЕрдиреБрд░реЛрдз рдкрд░ beforeSend рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рдХрднреА рднреА рд╣рд┐рдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрднреА рднреА рд╕рдВрддрд░реА рдХреЛ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред

рдореБрдЭреЗ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬрдм рдореИрдВ Sentry.getCurrentHub().getClient().captureException(error) рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рд╣рд░ рдмрд╛рд░ рд╕реЗрдВрдЯреНрд░реА рдХреЛ рдЕрдкрд╡рд╛рдж рднреЗрдЬрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Sentry.configureScope рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рджрд╛рдпрд░рд╛ рдХрднреА рднреА рдШрдЯрдирд╛ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реИрдореНрдмреНрдбрд╛ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдХ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреА-рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЕрдкрдиреЗ init рдХреЙрд▓ рдореЗрдВ debug: true рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддрд┐рд░реВрдкрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдПрдХреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

Sentry.init({
  integrations: integrations => {
    return integrations.filter(integration => integration.name !== 'Dedupe');
  }
});

https://docs.sentry.io/platforms/node/default-integrations/

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреА-рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЕрдкрдиреЗ init рдХреЙрд▓ рдореЗрдВ debug: true рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддрд┐рд░реВрдкрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдПрдХреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

Sentry.init({
  integrations: integrations => {
    return integrations.filter(integration => integration.name !== 'Dedupe');
  }
});

https://docs.sentry.io/platforms/node/default-integrations/

рджрд┐рд▓рдЪрд╕реНрдкред рдпрд╣ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдорд┐рд▓рд╛ред рд╣рдЯрд╛рдП рдЧрдП dedupe рдиреЗ рдЗрд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред

рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдИ рдмрдЧ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдЧрд▓рд╛ рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдг Dedupe рд╡реИрдХрд▓реНрдкрд┐рдХ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдИ рдХрдЯреМрддреА рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

scorpio13love picture scorpio13love  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ma2gedev picture ma2gedev  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kishor-bhatt picture kishor-bhatt  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hinok picture hinok  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adepue picture adepue  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ