Sentry-javascript: [ํ”ผ๋“œ๋ฐฑ ์š”์ฒญ] Sentry JavaScript SDK v7 ๋กœ๋“œ๋งต

์— ๋งŒ๋“  2020๋…„ 08์›” 13์ผ  ยท  18์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: getsentry/sentry-javascript

ยก์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„!

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

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๊ท€ํ•˜์˜ ํ”ผ๋“œ๋ฐฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

_SDK๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€์žฅ ํฐ ๊ณ ์ถฉ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?_
_์–ด๋–ค ๊ธฐ๋Šฅ์ด ๊ฐ€์žฅ ๋ถ€์กฑํ•ฉ๋‹ˆ๊นŒ?_
_๋ฌด์—‡์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ?_

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์•„๋ž˜ ๋‚˜์—ด๋œ ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€๋ฅผ ํ•ด๊ฒฐํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

  • IE10 ๋ฐ ๊ณต์‹์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋…ธ๋“œ ๋ฒ„์ „์— ๋Œ€ํ•œ ์ง€์› ์ค‘๋‹จ
  • ์ „์ฒด ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒ ์ค„์ž…๋‹ˆ๋‹ค.
  • SDK๋ฅผ ๋”์šฑ ๋ชจ๋“ˆํ™”
  • ํŠธ๋ฆฌ ํ”๋“ค๊ธฐ ํ˜ธํ™˜์„ฑ ํ–ฅ์ƒ
  • ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์™€ ๋” ์ž˜ ์ž‘๋™ํ•˜๋„๋ก ํ†ตํ•ฉ/ํ™•์žฅ ์žฌ์ž‘์—…

์šฐ๋ฆฌ๊ฐ€ ๋‹น์‹ ์„ ๋„์šธ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๊ณ  ๋‹น์‹ ์˜ ์ƒ๊ฐ์„ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค! ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ์˜๊ฒฌ์— ๋‹ตํ•  ๊ฒƒ์ด๋ฏ€๋กœ ๋ชจ๋“  ์˜๊ฒฌ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ!
์นด๋ฐ€

Breaking Discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ €์—๊ฒŒ drastically reduce overall bundle size -goal ๋„ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  18 ๋Œ“๊ธ€

๊ฐ€์žฅ ํฐ ๋ถˆ๋งŒ์€ ํ•ญ์ƒ ๋‚ด ์˜ค๋ฅ˜ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ํฐ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ข…์ข… ๋” ๋‚˜์€ ํŽ˜์ด์ง€ ์†๋„ ์ ์ˆ˜๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์ฒซ ํŽ˜์ด์ง€ ๋กœ๋“œ ํ›„ 5-10์ดˆ ํ›„์— Sentry๋ฅผ ์ง€์—ฐ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹น์‹ ์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ฒŒ ๋˜์–ด ๋งค์šฐ ๊ธฐ์ฉ๋‹ˆ๋‹ค โค๏ธ

์ €์—๊ฒŒ drastically reduce overall bundle size -goal ๋„ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•,

์ „์ฒด ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ํฌ๊ฒŒ ์ค„์ž…๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ +1ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค: ๋‚ด ์›น ์•ฑ ์—์„œ Sentry ์ดˆ๊ธฐํ™”๋Š” 30ms(๋น ๋ฅธ ์ปดํ“จํ„ฐ์—์„œ)๊ฐ€ ์†Œ์š”๋˜๋Š”๋ฐ, ์ด๋Š” ์ง„๋‹จ ๋กœ๊ฑฐ์— ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์ด๊ณ  React Native ์•ฑ์—์„œ๋Š” ๋ฒˆ๋“ค๋Ÿฌ(๋ฉ”ํŠธ๋กœ) ๋•Œ๋ฌธ์— ํ›จ์”ฌ ๋” ๋‚˜์ฉ๋‹ˆ๋‹ค. ํŠธ๋ฆฌ ์‰์ดํ‚น์„ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— Sentry๋Š” ์—„์ฒญ๋‚œ _78๊ฐœ์˜ ํŒŒ์ผ_์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹œ์ž‘ ์‹œ๊ฐ„์— ์ƒ๋‹นํ•œ ๊ธฐ์—ฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค(๋ช‡ %).

์•ˆ๋…•ํ•˜์„ธ์š”, React Native์˜ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ:

image

์ด๊ฒƒ์€ iPhone X์—์„œ ํ”„๋กœํŒŒ์ผ๋ง๋ฉ๋‹ˆ๋‹ค. Sentry๋Š” ์‹œ์ž‘ ์‹œ ๋ฌด๋ ค 54ms๊ฐ€ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ~40์€ ๋Œ€๋Ÿ‰์˜ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ค๊ณ  ~15๋Š” JS ์ฝ”๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. _native_ ์ธก์„ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จํ•˜๋Š” ~30ms๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  Sentry์˜ JS(๋งŽ์€ ๋ถ€๋ถ„์ด ์žˆ์Œ)๋ฅผ ๋ ‰์‹ฑ/ํŒŒ์‹ฑํ•  ๋•Œ ์„ค๋ช…๋˜์ง€ ์•Š๋Š” ์‹œ๊ฐ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. 5-15ms๊ฐ€ ์˜์‹ฌ๋˜์ง€๋งŒ ์ •ํ™•ํ•˜๊ฒŒ ์ธก์ •ํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด - 90-100ms - ๋‚ด ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ์ด ์‹œ๊ฐ„์˜ 15%์ž…๋‹ˆ๋‹ค!

์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค! ์‚ฌ์šฉ์ž๋ฅผ console.log์— ๋…ธ์ถœํ•˜๊ณ  ์‹ถ์ง€ ์•Š์ง€๋งŒ ์ด๋™ ๊ฒฝ๋กœ๋กœ ์บก์ฒ˜๋˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ํ”„๋กœ๋•์…˜ ์•ฑ์— ๋Œ€ํ•œ ๋ณด๋‹ค ์œ ์—ฐํ•œ ๋กœ๊น… ์˜ต์…˜(๋˜๋Š” ๋ฌธ์„œํ™” ๋ฐฉ๋ฒ•)์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ https://github.com/getsentry/sentry/issues/12618 ๋ฐ https://github.com/getsentry/sentry-javascript/issues/1883 ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜

Sentry ์ด๋™ ๊ฒฝ๋กœ๋Š” debug ๋˜๋Š” loglevel ๊ณผ ๊ฐ™์€ ๋กœ๊น… ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ”„๋กœ๋•์…˜ ์•ฑ์˜ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ์ด๋ฏธ ์ผ๋ถ€ DIY ์ ‘๊ทผ ๋ฐฉ์‹์—์„œ ์ง€์›๋˜์ง€๋งŒ ํ˜„์žฌ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (๋˜๋Š” ๊ทธ๊ฒƒ์ด ์žˆ๊ณ  ์–ด๋–ป๊ฒŒ ๋“  ๋†“์นœ ๊ฒฝ์šฐ ํŒ์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.) ๊ฐ์‚ฌ ํ•ด์š”!

์•ˆ๋…•ํ•˜์„ธ์š”, SDK ์ดˆ๊ธฐํ™”์— ๋Œ€ํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ต์…˜์œผ๋กœ Sentry.init๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹  SDK๋Š” DSN ID ๋ฐ ๊ธฐํƒ€ ์˜ต์…˜์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ๋ช…๋ช…๋œ ์ „์—ญ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ SentryOptions๋ฅผ ์ž๋™์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ•„์š”ํ•  ๋•Œ JS ํŒŒ์ผ์„ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํฌ๋กœ์Šค ๋„๋ฉ”์ธ ์š”์ฒญ ๋˜๋Š” ๋„คํŠธ์›Œํ‚น ๋ฌธ์ œ์—์„œ ๋ฒˆ๋“ค js์˜ ๋กœ๋“œ ์ด๋ฒคํŠธ๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ํ™•์ธํ•˜๋ฉด ์ด์— ๋„์›€์ด ๋˜๋ฉฐ init ํ•จ์ˆ˜๋ฅผ ๋…์ ์ ์œผ๋กœ ํ˜ธ์ถœํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

_SDK๊ฐ€ event_ ํ‘œ์‹œ๋ฅผ ๋ณด๋‚ด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

capureEvent ์ด ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ์ผ์ข…์˜ ํ‘œ์‹œ๋ฅผ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ์— ๋Œ€๊ธฐํ•˜๊ณ  ๋‚˜์ค‘์— ๋‹ค์‹œ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์˜คํ”„๋ผ์ธ ์šฐ์„  ์•ฑ(ํ”„๋กœ๊ทธ๋ ˆ์‹œ๋ธŒ ์›น ์•ฑ)์— ์ •๋ง ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์˜จ๋ผ์ธ ์ƒํƒœ์— ์žˆ์ง€๋งŒ ๋น„์ •์ƒ์ ์ธ ์—ฐ๊ฒฐ/์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์ธํ•ด ๋„คํŠธ์›Œํฌ ์š”์ฒญ์ด ์‹คํŒจํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ๋„คํŠธ์›Œํฌ ๋ฒ”์œ„๊ฐ€ ์—ด์•…ํ•œ ํŠธ๋กœํ”„ ์ง€์—ญ ์ด๋™).

์˜คํ”„๋ผ์ธ ํ†ตํ•ฉ์ด ์žˆ์ง€๋งŒ ํ•ด๋‹น ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃจ๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์˜จ๋ผ์ธ ๋ฐ ์˜คํ”„๋ผ์ธ ์ด๋ฒคํŠธ ์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜๋Š” ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด Sentry์— ์˜ํ•ด ๊ธฐ๋ก๋˜์ง€ ์•Š๊ณ  ๊ณต๋ฐฑ์œผ๋กœ ์‚ฌ๋ผ์ง€๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์›์ธ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PWA์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๊ณ  ์•ฑ์ด ์˜คํ”„๋ผ์ธ์ผ ๋•Œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉฐ ์„ผํŠธ๋ฆฌ ์ˆ˜์ง‘ ๋„๋ฉ”์ธ์— ๋“ฑ๋ก๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค ์›Œ์ปค์—์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋™๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

@edelvalle
์ด๊ฒƒ์€ Workbox์—์„œ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๊ณ  Background Sync ํ”Œ๋Ÿฌ๊ทธ์ธ ~์ด์ง€๋งŒ ์•„์ง ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค~
์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™๊ณ  ์ด๋ฒคํŠธ ๋‚ ์งœ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ์ ์„ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

// service-worker.js
import { registerRoute } from 'workbox-routing'
import { NetworkOnly } from 'workbox-strategies'
import { BackgroundSyncPlugin } from 'workbox-background-sync'

registerRoute(
  new RegExp('^https://[^\\.]+\\.ingest\\.sentry\\.io/api/.*$'),
  new NetworkOnly({
    plugins: [
      new BackgroundSyncPlugin('project-name/sentry-event-queue', {
        maxRetentionTime: 7 * 24 * 60, // 7 days
      })
    ],
  }),
  'POST'
)

์•ˆ๋…•ํ•˜์„ธ์š”, drastically reduce overall bundle size ) ๋ณด๊ณ  ์‹ถ์–ดํ•˜๋Š” ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” gatsby+preact ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  sentry๋Š” ์šฐ๋ฆฌ์˜ ์ฃผ์š” ๋ฒˆ๋“ค ํฌ๊ธฐ(95kb ์ค‘ 27kb)์˜ ~28%๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ํŽ˜์ด์ง€๋‹น js ๋ฒˆ๋“ค์„ 90kb ๋ฏธ๋งŒ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ๋…ธ๋ ฅ ์ค‘์ด๋ฏ€๋กœ ์—ฐ๊ฒฐ์ด ์ข‹์ง€ ์•Š์€ ์‹œ๊ณจ ์ง€์—ญ์—์„œ ์•ฑ์ด ๋” ์ž˜ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›จ์”ฌ ๋” ์ž‘์€ ์„ผํŠธ๋ฆฌ SDK ํฌ๊ธฐ๊ฐ€ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

IE11 ์ง€์›๋„ ์ค‘๋‹จํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Microsoft๋ฅผ ๋น„๋กฏํ•œ ๋งŽ์€ ๋Œ€๊ทœ๋ชจ ์‚ฌ์ดํŠธ์—์„œ ์˜ฌํ•ด ๋ง๊นŒ์ง€ ์ด ๋ธŒ๋ผ์šฐ์ €์— ๋Œ€ํ•œ ์ง€์›์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ฌธ์ œ๋Š” ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.

@kamilogorek v6์ด ์–ธ์ œ

๋‚˜๋Š” ๋˜ํ•œ @xr0master์— ๋™์˜ํ•˜๊ณ  ์ƒˆ ๋ฒ„์ „์—์„œ IE11์„ ํฌํ•จํ•˜์—ฌ IE ์ง€์›์ด ์™„์ „ํžˆ ์ค‘๋‹จ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

SDK๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

  • ์ˆ˜์ž… ์ค‘. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด "๋‚˜๋ฌด ํ”๋“ค๋ฆผ" ๋˜๋Š” ๋ชจ๋“ˆ์„ฑ๊ณผ ํ•จ๊ป˜ ์˜ณ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
// This is not nice, as it doesn't get auto-completion when importing
import * as Sentry from '@sentry/browser'

// This is better, but has given me problems on Sentry 5.x
import { captureException } from '@sentry/browser'
  • ํ˜ธ์ถœ ์Šคํƒ ๋””๋ฒ„๊น…. Sentry๊ฐ€ ๊ตฌํ˜„๋˜๋Š” ๋ฐฉ์‹์˜ ๊ด€์ ์—์„œ ๋ณด๋ฉด ๋ถ„๋ช…ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  console.log ๋Š” instruments.js:1 ์—์„œ ๋น„๋กฏ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ์ด๋Š” ๋””๋ฒ„๊น… ์ค‘์— ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. console.trace ๋Š” ๋„ˆ๋ฌด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ๋กœ๊น… ์ค‘์ธ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด console.log ์— ์ˆ˜๋™์œผ๋กœ ์ด๋™ ๊ฒฝ๋กœ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๊ธฐ๋Šฅ์ด ๊ฐ€์žฅ ๋ถ€์กฑํ•ฉ๋‹ˆ๊นŒ?

๊ฑด๊ฐ• ์ง€์› .

AsyncLocalStorage๋ฅผ ์ง€์›ํ•˜๋Š” ๋…ธ๋“œ ๋ฒ„์ „์—์„œ ์‚ฌ์šฉํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธ์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ ์™ธ์—๋Š” ํฐ ๋ณ€ํ™” ์—†์ด ์˜ค๋Š˜ 6.0.0 ๋ฐฐ์†กํ–ˆ์Šต๋‹ˆ๋‹ค. cc @OmgImAlexis
์ด ๋ฌธ์ œ์˜ ์ œ๋ชฉ์„ v7๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ์ด๋ฅผ ๋” ์ž˜ ๋ฐ˜์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Sentry.init ์™€ ๋ณ„๋„๋กœ ํ”„๋ ˆ์ž„์›Œํฌ ํ†ตํ•ฉ์„ ๋…ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Vue๊ฐ€ ๋Š๋ฆฌ๊ฒŒ ๋กœ๋“œ๋˜๋Š” #3232๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์„ผํŠธ๋ฆฌ ์ดˆ๊ธฐํ™” ์‹œ๊ฐ„์— ์กด์žฌํ•œ๋‹ค๊ณ  ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Vue ๋กœ๋“œ ์‹œ๊ฐ„์— ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” Sentry.configureVue(Vue) ์™€ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž์ฒด ๋ผ์šฐํ„ฐ ๋ฐ ๋ณด๋‹ค ๊ตฌ์ฒด์ ์ธ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์—ฐ ํ˜ธ์ถœ๋กœ ๋™์ผํ•œ ๋ฌธ์„œ ๋‚ด์—์„œ ๋ณด์กฐ ๋ฐ˜์‘ ์•ฑ ๋กœ๋“œ ๋ฐ ์–ธ๋กœ๋“œ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ˜์‘ ๋ผ์šฐํ„ฐ ํ†ตํ•ฉ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰