๐ก 1. Sentry์ด๋?
Sentry๋ ์ํํธ์จ์ด ๋ฒ๊ทธ ๋ฐ ์๋ฌ ์ถ์ ์ ์ํ ์คํ ์์ค ์ค๋ฅ ๋ชจ๋ํฐ๋ง ๋๊ตฌ์ ๋๋ค. ๊ฐ๋ฐ์๋ค์ด ์ค์๊ฐ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ํ ๋ฒ๊ทธ, ์์ธ, ํฌ๋์ ๋ฑ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ด๋ฅผ ์ถ์ ํ์ฌ ๋๋ฒ๊น ํ ์ ์๊ฒ ํด์ค๋๋ค. Sentry๋ ์น ์ ํ๋ฆฌ์ผ์ด์ , ๋ชจ๋ฐ์ผ ์ฑ ๋ฐ ๋ค์ํ ํ๋ซํผ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ก 2. Next.js ํ๋ก์ ํธ์ Sentry ๋์ ํ๊ธฐ.
๐ฃ 2.1 Senty ์น์ฌ์ดํธ์์ ํ๋ก์ ํธ ๋ง๋ค๊ธฐ.
ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ -> Projectํญ -> ์ฐ์ธก ์๋จ์ Create Project ๋ฒํผ
Next.js ํด๋ฆญ -> Project name์ ์์ ์ next.js ํ๋ก์ ํธ ์ด๋ฆ ์ ๋ ฅ(๊ฐ์ง ์์๋ ๋จ) -> ํ์ฑํ๋ Create Project ํด๋ฆญ
๐ฃ 2.2 Next.js ํ๋ก์ ํธ์ Sentry module ์ค์น
next.js ํ๋ก์ ํธ ํฐ๋ฏธ๋๋ก ๊ฐ์, ์ npx @sentry/wizard@latest -i nextjs ์ ๋ ฅ.
Ok to preceed?(y) => y ์ ๋ ฅ
- ์ ์ง๋ฌธ๋ค์ ๋ชจ๋ yes
- Select your Sentry project๋ sentry์ ๋ง๋ค์ด์ง project๊ฐ ์ฌ๋ฌ๊ฐ ์์ผ๋ฉด ๋ฆฌ์คํธ๊ฐ ๋์ด. ๊ทธ์ค์ ๋์ ํ๊ณ ์ ํ๋ project๋ฅผ ๋ฐฉํฅํค๋ก ์ ํ ํ ์ํฐ.
๐ฃ 2.3 Next.js ํ๋ก์ ํธ์ Sentry ์ฝ๋ ๋์ .
์ ๊ณผ์ ์ด ๋๋๋ฉด ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๊ฐ ์ฌ์ง๊ณผ ๊ฐ์ ๊ฒ์ ๋๋ค. ์ด๋ ์ผํธ๋ฆฌ ํ ์คํธ๋ฅผ ํด๋ณด๊ธฐ ์ํด์ src/app/sentry-example-page/page.jsx ํ์ผ ๋ด์ฉ์ ๋ณต์ฌํด์ src/app/page.tsx์ ๋ถ์ฌ ๋ฃ์ผ๋ฉด ํ ์คํธ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. (๋นจ๊ฐ์ -> ๋ ธ๋์)
์ฝ๋๋ฅผ ์ ์ฉํ๊ณ ํ๋ก์ ํธ๋ฅผ ์คํํ๋ฉด ์์ ๊ฐ์ด ์คํ์ด ๋๋ค.
๐ ์ฃผ์ ์ฌํญ
- ๋ธ๋ผ์ฐ์ ๋ ํฌ๋กฌ์ ์ถ์ฒํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์ ๊ด๊ณ ๋ฐ ํธ๋ํน ์ ๊ฑฐ ํ์ฅ ํ๋ก๊ทธ๋จ์ด ์๋ค๋ฉด, ์ผํธ๋ฆฌ๊ฐ ์ ์ ์๋ํ์ง ์์ต๋๋ค.
๐ฃ 2.4 Next.js ํ๋ก์ ํธ์ Sentry ์ฝ๋ ๋์ . (sentry ๋ฐ nextjs ๋ฒ์ ์ด ์ต์ ์ด ์๋ ๊ฒฝ์ฐ)
- ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์ ํ์ผ 3๊ฐ๋ฅผ ์์ฑํ๊ณ , ์๋ ์ฝ๋๋ฅผ ์์ฑํด์ค๋๋ค.
DSN ์ป๋ ๋ฐฉ๋ฒ
Setting -> Projects -> ๋ด ํ๋ก์ ํธ ํด๋ฆญ -> SDK Setup -> Client Keys(DSN)
// sentry.client.config.ts, sentry.server.config.ts, sentry.edge.config.ts
import * as Sentry from "@sentry/nextjs";
Sentry.init({
dsn: "๋ด ์ผํธ๋ฆฌ ํ๋ก์ ํธ dsn",
// Adjust this value in production, or use tracesSampler for greater control
tracesSampleRate: 1,
// Setting this option to true will print useful information to the console while you're setting up Sentry.
debug: false,
});
next.config.js ํ์ผ์ ์๋ ์ฝ๋ ์ถ๊ฐํฉ๋๋ค.
/** @type {import('next').NextConfig} */
const nextConfig = {}
module.exports = nextConfig
const { withSentryConfig } = require("@sentry/nextjs");
module.exports = withSentryConfig(
module.exports,
{
silent: true,
org: "๋ดํ์ฌ",
project: "sentry-test-project",
},
{
widenClientFileUpload: true,
transpileClientSDK: true,
tunnelRoute: "/monitoring",
hideSourceMaps: true,
disableLogger: true,
}
);
.sentryclirc ํ์ผ๋ ์์ฑ ํ ์๋ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ธ์.
[auth]
token=๋ดํ ํฐ
auth ํ ํฐ์ Settings -> Developer settings -> auth Tokens์์ ์ ๊ท ์์ฑํฉ๋๋ค.
๐ ์ ๋ฆฌ
- Sentry ์ฌ์ดํธ์์ ํ๋ก์ ํธ ์์ฑํ๊ธฐ.
- next.js ํ๋ก์ ํธ์ sentry module ์ค์นํ๊ธฐ.
- ์ฝ๋ ์์ฑํ๊ธฐ.
- sentry ์ฌ์ดํธ์์ ํ์ธํ๊ธฐ.
๊ธด ๊ธ ์ฝ์ด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค :)
ํ๋ฆฐ ๋ด์ฉ์ด ์๊ฑฐ๋, ๋ง๋ถ์ผ ๋ด์ฉ์ด ์๋ค๋ฉด ์ธ์ ๋ ์ง ๋๊ธ ๋ฌ์์ฃผ์ธ์!
์ ๊ธ์ด ์กฐ๊ธ์ด๋๋ง ์ฝ์ผ์ ๋ถ๋ค์๊ฒ ๋์์ด ๋๋๋ก ๋
ธ๋ ฅํ๊ฒ ์ต๋๋ค
๋ค์ ํธ์ ๋ดฌ์~
'Front-End > Next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Next.js] Sentry replay ๋์ ํ๊ธฐ (2) | 2023.10.08 |
---|---|
[Next.js] Vercel๋ก ํ๋ก ํธ ๋ฐฐํฌํ๊ธฐ (๋๋ฉ์ธ ๋ณ๊ฒฝ) (0) | 2022.04.04 |
[Next.js] 01. ์์ํ๊ธฐ (2) | 2022.03.08 |