JavaScript๋กœ ์ž‘์„ฑ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Sentry๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜ ๋ชจ๋‹ˆํ„ฐ๋ง: 1๋ถ€

์„œ๋น„์Šค ๋ณด์ดˆ ๋‹ค์Œ์œผ๋กœ ์ž‘์„ฑ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฒ„๊ทธ๋ฅผ ์›๊ฒฉ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ.

JavaScript๋กœ ์ž‘์„ฑ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Sentry๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜ ๋ชจ๋‹ˆํ„ฐ๋ง: 1๋ถ€

ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์ด๋Š” ์ข…์ข… ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ณด์ดˆ ๋ฒ„๊ทธ๋ฅผ ์›๊ฒฉ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์ด ๋ฌธ์„œ์—์„œ ์„ค๋ช…ํ•˜๋Š” ์†”๋ฃจ์…˜์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๊ฒƒ

์ด๋Ÿฌํ•œ ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Node.js๋ฅผ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๊ธฐ๋Šฅ์ด ํ’๋ถ€ํ•œ ๊ฐœ๋ฐœ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ตœ์‹  LTS ๋ฒ„์ „(8.12.0)์„ ๋‹ค์šด๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณด์ดˆ: Sentry ์„œ๋น„์Šค์˜ ๊ณ„์ •(์›” ์ตœ๋Œ€ 10๊ฐœ์˜ ๋ฒ„๊ทธ๋ฅผ ๋ฌด๋ฃŒ๋กœ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Œ) ๋˜๋Š” ์„ค์น˜๋œ ๋กœ์ปฌ Sentry - https://github.com/getsentry/onpremise

์„œ๋ฒ„์— ์„ค์น˜

์„œ๋ฒ„์— Sentry On-Premise๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. rpm์„ ๋นŒ๋“œํ•˜๊ณ  ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค - https://habr.com/ru/post/500632/

  2. ๊ณต์‹ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์„ธ์š”:

    ะฃัั‚ะฐะฝะพะฒะธั‚ัŒ ะฝะฐ ัะตั€ะฒะตั€ docker ะธ docker-compose
    git clone https://github.com/getsentry/onpremise.git
    ./install.sh

ํ‘œ์ค€ ์‚ฌ์šฉ

์‹œ์ž‘ํ•˜๋ ค๋ฉด ์„œ๋น„์Šค ์›น์‚ฌ์ดํŠธ์—์„œ ์ƒˆ ์„œ๋น„์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์„ธ์š”. ๋ณด์ดˆ-์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๋ฉด ํ•ด๋‹น ๋ฌธ์„œ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์—๋Š” ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ.

์ฒซ ๋ฒˆ์งธ ์˜ˆ๋Š” ํ‘œ์ค€์ž…๋‹ˆ๋‹ค. ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ. ์—ฌ๊ธฐ์—๋Š” ๋‘ ๊ฐœ์˜ ๋ฒ„ํŠผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. "์•ˆ๋…•ํ•˜์„ธ์š”" (์•ˆ๋…•ํ•˜์„ธ์š”) ๊ทธ๋ฆฌ๊ณ  "์˜ค๋ฅ˜" (์˜ค๋ฅ˜).

๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์‹  ํ›„ "์•ˆ๋…•ํ•˜์„ธ์š”", ํ™”๋ฉด์ด ์žฌ๋ถ€ํŒ…๋˜๊ณ  ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ์‹œ๋„ ๋ฒ„๊ทธ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ์žก์•„๋‚ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๊ฐ€ "๋ฐœ๊ฒฌ"๋œ ํ›„ ์˜ค๋ฅ˜ ๋ณด๊ณ ์„œ๊ฐ€ ์„œ๋น„์Šค์— ์ˆ˜๋™์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋ณด์ดˆ.

"์˜ค๋ฅ˜" ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ„๊ทธ๋ฅผ ์‰ฝ๊ฒŒ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ”๋‹๋ผ/index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Vanilla</title>
</head>
<body>
  <button id="hello">Hello</button>
  <button id="error">Error</button>
  <div id="output"></div>
  <script src="https://browser.sentry-cdn.com/4.0.5/bundle.min.js" crossorigin="anonymous"></script>
  <script>
    (function () {
      'use strict';
      Sentry.init({ dsn: 'https://[email protected]/1289664' });
      var helloEl = document.getElementById('hello');
      var errorEl = document.getElementById('error');
      var outputEl = document.getElementById('output');
      helloEl.addEventListener('click', handleHelloClick);
      errorEl.addEventListener('click', handleErrorClick);
      function handleHelloClick() {
        outputEl.innerHTML = 'Hello World';
        try {
          throw new Error('Caught');
        } catch (err) {
          Sentry.captureException(err);
        }
      }
      function handleErrorClick() {
        throw new Error('Uncaught');
      }
    })();
  </script>
</body>
</html>

์ฐธ๊ณ  ์‚ฌํ•ญ :

  • Sentry๋Š” CDN์—์„œ ์„ค์น˜๋˜์–ด ์ „์—ญ ๋ณ€์ˆ˜๋กœ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
  • ์กฐ๊ธˆ ๋” ์ผ์ฐ ์šฐ๋ฆฌ๋Š” JavaScript๋กœ Sentry๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ˆ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์ •์  ์›น ์„œ๋ฒ„ ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Node.js๋ฅผ: http ์„œ๋ฒ„. ํŒŒ์ผ์ด ์ €์žฅ๋œ ํด๋”๋กœ ์ด๋™ index.html ํŽ˜์ด์ง€, ๋‹ค์Œ ์ค„์„ ์ž…๋ ฅ(์บ์‹ฑ ๋น„ํ™œ์„ฑํ™” ์˜ต์…˜)ํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฃผ์†Œ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. http://localhost:8080.

์žกํžŒ ๋ฒ„๊ทธ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹

๋จผ์ € ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์„ธ์š”. "์•ˆ๋…•ํ•˜์„ธ์š”".

JavaScript๋กœ ์ž‘์„ฑ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Sentry๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜ ๋ชจ๋‹ˆํ„ฐ๋ง: 1๋ถ€

๋ฒ„๊ทธ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์–ด ํ˜ธ์ถœ ์Šคํƒ์ด ํŒ์—…๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฝ˜์†”์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ์œผ๋กœ ๋ณด๋‚ด๋ฏ€๋กœ ๋ณด์ดˆ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ณด๊ณ ํ•˜๋ฉด ๊ณ„์ •์— ๊ด€๋ จ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

JavaScript๋กœ ์ž‘์„ฑ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Sentry๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜ ๋ชจ๋‹ˆํ„ฐ๋ง: 1๋ถ€

์ฐธ๊ณ  ์‚ฌํ•ญ :

  • ๋ฒ„๊ทธ๊ฐ€ ํฌํ•จ๋œ ํ–‰(24)์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ์ด๋™ ๊ฒฝ๋กœ ์ถ”์ ์—๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ๋ธŒ๋ผ์šฐ์ € ์ž‘์—…์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์€ ๋ฒ„๊ทธ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ๋ฒ•

๋ฒ„ํŠผ ํด๋ฆญ "์˜ค๋ฅ˜".

JavaScript๋กœ ์ž‘์„ฑ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Sentry๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜ ๋ชจ๋‹ˆํ„ฐ๋ง: 1๋ถ€

๋ฒ„๊ทธ๊ฐ€ ํ˜ธ์ถœ ์Šคํƒ์— ๋‚˜ํƒ€๋‚˜๋ฏ€๋กœ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์ฝ˜์†”์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ Sentry๋Š” ์ถ”๊ฐ€ ์กฐ์น˜ ์—†์ด ์ž๋™์œผ๋กœ ๋ฒ„๊ทธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

JavaScript๋กœ ์ž‘์„ฑ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Sentry๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜ ๋ชจ๋‹ˆํ„ฐ๋ง: 1๋ถ€

์ฐธ๊ณ  ์‚ฌํ•ญ :

  • ์–ด๋Š ์ค„(30)์—์„œ ๋ฒ„๊ทธ๊ฐ€ ์†์‹ค๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํƒ์ƒ‰๊ฒฝ๋กœ ํŠธ๋ ˆ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค(์ด์œ ๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค).

ํ”„๋กœ์ ํŠธ ๋ณด์•ˆ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

ํ”„๋กœ์ ํŠธ์— ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ฐฉ์‹์„ ๋ˆˆ์น˜์ฑ˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณด์ดˆ; ๋„์›€์„ ๋ฐ›์•„ DSN ๊ธฐ๋ก. ๋ฌธ์ œ๋Š” ํŽ˜์ด์ง€์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ์‚ฌ๋žŒ์ด ์ž…๋ ฅ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ์— ์˜ค๋ฅ˜ ๋ณด๊ณ ์„œ๋ฅผ ์ œ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋„๋ฉ”์ธ ์ˆ˜๋ฅผ ์ œํ•œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ (๋กœ์ปฌ ํ˜ธ์ŠคํŠธ). ์ด ์˜ต์…˜์€ ์„ค์ • ํƒญ์—์„œ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ณด์ดˆ-ํ”„๋กœ์ ํŠธ, ์„ผํŠธ๋ฆฌ ํ”„๋กœ์ ํŠธ ์„ค์ •.

JavaScript๋กœ ์ž‘์„ฑ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Sentry๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜ ๋ชจ๋‹ˆํ„ฐ๋ง: 1๋ถ€

๋ฆด๋ฆฌ์Šค

์–ด๋–ป๊ฒŒ ํ™œ์šฉํ• ๊นŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ณด์ดˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์–‘ํ•œ ๋ณ€ํ˜•์—์„œ๋Š” ๋ฒ„์ „ ๋ฒˆํ˜ธ๋กœ ์˜ค๋ฅ˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์ผ์ข…์˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ณ ์นœ ๋ฒ„๊ทธ๊ฐ€ ๋‹ค์‹œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์šฐ๋ฆฌ๊ฐ€ ๊ณ ์นœ ๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์บ์‹œ๋œ ์ด์ „ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ–ˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์‹๋ณ„์ž๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„๋ฐฉํ•˜๋‹ค (๋ฒ„์ „) ์‹œ์ž‘ ์‹œ ๋ณด์ดˆ.

๋ฐ”๋‹๋ผ/index.html

...
var RELEASE = '0.1.0';
Sentry.init({
  dsn: 'https://[email protected]/1289664',
  release: RELEASE,
});
...

์ดํ›„์—๋Š” ๋ชจ๋“  ์ƒˆ๋กœ์šด ์˜ค๋ฅ˜๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค (0.1.0)์ฆ‰, ์˜ฌ๋ฐ”๋ฅธ ๋ฒ„์ „์˜ ์ฝ”๋“œ์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

JavaScript๋กœ ์ž‘์„ฑ๋œ ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Sentry๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜ ๋ชจ๋‹ˆํ„ฐ๋ง: 1๋ถ€

์ฐธ๊ณ  ์‚ฌํ•ญ :

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

PS XNUMX๋ถ€๋Š” ๋‚ด์šฉ์ด ๊ธธ์–ด์„œ ๋”ฐ๋กœ ํฌ์ŠคํŒ…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

PS ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„ํŒ… ์„ผํŠธ๋ฆฌ https://t.me/sentry_ru

PS ๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ฒŒ์‹œ๋ฌผ์˜ ๋ฒˆ์—ญ์ž„์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค. https://codeburst.io/sentry-error-reporting-by-example-part-1-999b2df11556

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€