๐Ÿ–ฅ๏ธ Sentry ๋ชจ๋‹ˆํ„ฐ๋ง

ํŽญ๋„๋ฆฌยท2023๋…„ 11์›” 30์ผ
1

Angular

๋ชฉ๋ก ๋ณด๊ธฐ
2/2

Sentry๋ฅผ ์‚ฌ์šฉํ•œ๋Š” ๋ชฉ์ 

Sentry๋Š” ์‹ค์‹œ๊ฐ„ ์˜ค๋ฅ˜ ์ถ”์  ์‹œ์Šคํ…œ์œผ๋กœ, ์›น์‚ฌ์ดํŠธ, ๋ชจ๋ฐ”์ผ ์•ฑ, ๊ฒŒ์ž„ ๋“ฑ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ถ„์„ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ์„ ์ฆ‰๊ฐ์ ์œผ๋กœ ์ธ์ง€ํ•˜๊ณ , ๋น ๋ฅด๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด ์„œ๋น„์Šค ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ํฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

Sentry ์‚ฌ์šฉ์˜ ์ฃผ์š” ์žฅ์  ๐Ÿ˜„

1. ์‹ค์‹œ๊ฐ„ ์˜ค๋ฅ˜ ๋ชจ๋‹ˆํ„ฐ๋ง
์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ฆ‰์‹œ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด, ์ฆ‰๊ฐ์ ์ธ ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

2. ์ž์„ธํ•œ ์—๋Ÿฌ ๋ฆฌํฌํŠธ
์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ์ ์˜ ์Šคํƒ ํŠธ๋ ˆ์ด์Šค(stack trace)์™€ ํ•จ๊ป˜, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ํ™˜๊ฒฝ ์ •๋ณด(์šด์˜์ฒด์ œ, ๋ธŒ๋ผ์šฐ์ €, IP, OS ๋“ฑ)๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ฆด๋ฆฌ์ฆˆ ์ถ”์ 
Sentry๋Š” ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „์„ ์ถ”์ ํ•˜์—ฌ ์–ด๋А ๋ฒ„์ „์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋Š”์ง€ ํŒŒ์•…ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

4. ํŒ€์›๊ณผ์˜ ํ˜‘์—…
์—๋Ÿฌ๋ฅผ ํŒ€์›๊ณผ ๊ณต์œ ํ•˜๊ณ , ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ƒํ™ฉ์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ํŒ€์›๋“ค์ด ํ˜„์žฌ ์ƒํ™ฉ์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

Sentry์˜ ๋‹จ์  ๐Ÿ˜ญ

1. ๋น„์šฉ
Sentry๋Š” ๋ฌด๋ฃŒ ํ”Œ๋žœ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋ฌด๋ฃŒ ํ”Œ๋žœ์€ ์ผ์ • ์ˆ˜์ค€์˜ ์—๋Ÿฌ ๋ณด๊ณ ๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ , ๋ณด๊ณ ๋Ÿ‰์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋น„์šฉ ๋ถ€๋‹ด์ด ํด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๋ณต์žก์„ฑ
Sentry๋Š” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‹œ๊ฐ„์„ ๋“ค์—ฌ Sentry๋ฅผ ์ดํ•ดํ•˜๊ณ  ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŠนํžˆ Sentry๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ฐ์ดํ„ฐ ๋ณด์•ˆ
Sentry๋Š” ์—๋Ÿฌ ์ •๋ณด๋ฅผ ํด๋ผ์šฐ๋“œ์— ์ €์žฅํ•˜๋ฏ€๋กœ, ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Sentry๋Š” ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์„ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ด๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ์šฉ์ž์˜ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค.

4. ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•œ๊ณ„
Sentry๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—๋Ÿฌ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ณด๊ณ ํ•˜์ง€๋งŒ, ์ด๋Š” ์„œ๋ฒ„ ์ƒํƒœ๋‚˜ ์ธํ”„๋ผ ๋ฌธ์ œ ๋“ฑ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Sentry๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ฑฐ๋‚˜ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

Angular์— Sentry ์ ์šฉํ•˜๊ธฐ

* ํ•ด๋‹น ๋ฐฉ๋ฒ•์€ Angular Framework(Version 9)์— ์ ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ผ๋‹จ ํ•„์š”ํ•œ package๋ฅผ install ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
npm install npm install @sentry/angular@^6 @sentry/browser^6 @sentry/integrations^6

์œ„์™€๊ฐ™์ด install์„ ์ง„ํ–‰ํ•  ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์ด package.json์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

"@sentry/angular": "^6.19.7",
"@sentry/browser": "^6.19.7",
"@sentry/integrations": "^6.19.7",

์šฐ์„  Sentry๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  ๊ฐœ์ธ DSN์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

DSN ์ฐพ๋Š”๋ฐฉ๋ฒ•

  • Settings ํƒญ์„ ํด๋ฆญํ•˜์‹  ํ›„ DSN์„ ๊ฒ€์ƒ‰ํ•˜์‹œ๋ฉด ์ž๊ธฐ ์ž์‹ ์˜ ๊ณ ์œ  ๋ฒˆํ˜ธ๊ฐ€ ๋‚˜์˜ค๊ฒŒ๋ฉ๋‹ˆ๋‹ค ์ด๊ฒƒ์€ ๋…ธ์ถœ๋˜๋ฉด์•ˆ๋˜๋‹ˆ ์ฃผ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Angular์— ์ ์šฉ ๋ฐฉ๋ฒ•

Angular ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๊ฐ์ง€ํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ ค๋ฉด Sentry๋ฅผ ํ†ตํ•œ ์—๋Ÿฌ ํŠธ๋ž˜ํ‚น์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” main.ts ํŒŒ์ผ์—์„œ Sentry๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์ดˆ๊ธฐํ™” ๊ณผ์ •์„ ๋‹ด์€ ์˜ˆ์‹œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

// main.ts

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

// Sentry SDK ์„ค์น˜
import * as Sentry from '@sentry/angular';
import { Angular as AngularIntegration } from '@sentry/integrations';

if (environment.production) {
  // Sentry ์ดˆ๊ธฐํ™”
  Sentry.init({
    dsn: 'YOUR_SENTRY_DSN',  // Sentry ๊ณ„์ •์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ DSN ์ž…๋ ฅ
    // ๊ธฐํƒ€ ์˜ต์…˜ ์„ค์ • ๊ฐ€๋Šฅ
  });
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule)
  .catch(err => console.error(err));

์ด ์˜ˆ์‹œ ์ฝ”๋“œ์—์„œ๋Š” environment.production์ด true์ผ ๋•Œ๋งŒ Sentry๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” Sentry๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š๊ณ , ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋งŒ ํ™œ์„ฑํ™”๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, Sentry์— ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ๋“ฑ๋กํ•œ ํ›„์— ๋ฐœ๊ธ‰๋ฐ›์€ DSN์„ YOUR_SENTRY_DSN ๋ถ€๋ถ„์— ์ž…๋ ฅํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ Sentry๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด์„  if๋ฌธ ๋ฐ–์—์„œ Sentry๋ฅผ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด Angular ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋  ๋•Œ Sentry๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์–ด ๋ชจ๋“  ์—๋Ÿฌ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  Sentry ์„œ๋ฒ„๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ ์ƒํ™ฉ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ

// main.component.html
<button (click)="createNewError()">Sentry Error Log Test</button>

// main.compoent.ts
import * as Sentry from '@sentry/angular';

createNewError() {
  alert('Sentry Error Log Test...');
  throw new Error('Sentry Error Log Test...');
  
  // ์ง์ ‘ Sentry๋กœ Error๋ฅผ ๋ณด๊ณ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
  Sentry.captureException(error)
}

์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•œ ํ›„ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ฒŒ ๋˜๋ฉด

์œ„์™€ ๊ฐ™์ด Sentry์— Error ๋กœ๊ทธ๊ฐ€ ๋œจ๋Š”๊ฒƒ์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์™ธ์—๋„ ์ง์ ‘ Error๋กœ๊ทธ๋ฅผ ๋ณด๋‚ด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ captureException๋ผ๋Š” Sentry์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • ์ด ์™ธ์—๋„ ๋งŽ์€ API๋ฅผ ์ œ๊ณตํ•˜๋‹ˆ Sentry Doc๋ฅผ ์‚ดํŽด๋ณด์‹œ๋ฉด ๋งŽ์€ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Sentry ์š”์ ์ •๋ฆฌ

Sentry๋Š” Front-End ๊ฐœ๋ฐœ์ž๋“ค์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—๋Ÿฌ์™€ ์„ฑ๋Šฅ ์ด์Šˆ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
์•„๋ž˜๋Š” Sentry์—์„œ Front-End ๊ฐœ๋ฐœ์ž๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฃผ์š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

โœ… ์—๋Ÿฌ ํŠธ๋ž˜ํ‚น:
Sentry๋Š” ์ž๋™์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ํŠธ๋ž˜ํ‚นํ•˜์—ฌ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

โœ… ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ:
Sentry๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์•Œ๋ฆผ์„ ์ œ๊ณตํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๋Œ€์‘ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

โœ… ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง:
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ์ด์Šˆ๋ฅผ Sentry์—์„œ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ๊ฐ„, API ํ˜ธ์ถœ ์‹œ๊ฐ„ ๋“ฑ์˜ ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… ์„ธ์…˜ ํŠธ๋ž˜ํ‚น:
Sentry๋Š” ์‚ฌ์šฉ์ž ์„ธ์…˜์„ ํŠธ๋ž˜ํ‚นํ•˜์—ฌ ํŠน์ • ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒช๋Š” ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

โœ… ํ™˜๊ฒฝ ๊ตฌ๋ถ„:
๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰๋  ๋•Œ Sentry๋Š” ์—๋Ÿฌ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ  ํŠธ๋ž˜ํ‚นํ•˜์—ฌ ๊ฐœ๋ฐœ, ์Šคํ…Œ์ด์ง•, ํ”„๋กœ๋•์…˜ ๋“ฑ์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ง‘:
Sentry๋Š” ์‚ฌ์šฉ์ž๋“ค๋กœ๋ถ€ํ„ฐ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ˆ˜์ง‘ํ•˜์—ฌ ๊ฐœ์„ ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

โœ… Integrations:
Sentry๋Š” ๋‹ค์–‘ํ•œ ํ†ตํ•ฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… ์†์„ฑ ๋ฐ ๋ผ๋ฒจ๋ง:
Sentry์—์„œ๋Š” ์—๋Ÿฌ์— ๋Œ€ํ•ด ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ผ๋ฒจ์„ ์ง€์ •ํ•˜์—ฌ ํšจ๊ณผ์ ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Sentry๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋“ค์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•ˆ์ •์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ง€์†์ ์œผ๋กœ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ๋„๊ตฌ๋Š” ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•œ ๋””๋ฒ„๊น…์„ ๊ฐ€๋Šฅ์ผ€ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. Front-End ๊ฐœ๋ฐœ์ž๋กœ์„œ Sentry๋ฅผ ์ ๊ทน ํ™œ์šฉํ•˜์—ฌ ๋†’์€ ํ’ˆ์งˆ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Angular V17

์ถ”๊ฐ€์ ์œผ๋กœ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ

Replay

  • ์œ„ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•  ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋กœ์ง์„ ์ƒ์„ฑํ•˜์˜€์„ ๋•Œ Sentry์—์„œ๋Š” ์œ ์ €๊ฐ€ ์–ด๋–ค์‹์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ™”๋ฉด์„ ์ œ๊ณตํ•ด์ค€๋‹ค.

์œ„ ์˜์ƒ์„ ์ฐธ๊ณ ํ•œ๋‹ค๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐœ์ƒํ•œ Error์ธ์ง€ ์ž˜ ๋ชจ๋ฅผ ๊ฒฝ์šฐ ์œ ์šฉํ•˜๊ฒŒ Error๋ฅผ ์บ์น˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ผ ๊ฒƒ ๊ฐ™๋‹ค.

profile
ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ ์‹ถ์€ ์ฝ”๋ฆฐ์ด ์ดํ•œ๊ธ€

0๊ฐœ์˜ ๋Œ“๊ธ€