歩哨によるエラー監視
あなたのアプリケーションが生産でバグに遭遇するとき、モニターすることができることは、あなたの個人的であるかプロのプロジェクトのために持っている良いものです.の人々Sentry あなたのアプリケーション内のエラーを監視するためのソリューションを作成し、彼らが起こるときに警告します.私は私の個人的なサイトと私の妻のために作ったウェブサイトのためにこれを設定している.このガイドでは、あなたのギャツビーのアプリケーションに歩哨監視を追加するために必要なものを歩いていきます.
Create Sentry Account and Project First, we need to create an account with Sentry . 彼らのサイトへのヘッド、選択
Sign Up
いずれかのアカウントを作成したり、githubや他の統合のいずれかを使用します.サインされたら
React
プラットフォーム用Create Project
Install Packages 📦
In your project, add the gatsby-plugin-sentry
:
npm install gatsby-plugin-sentry
or
yarn add gatsby-plugin-sentry
Gatsby Configuration Changes 👨💻
Using the Sentry DSN we copied from creating our project, we now need to configure our Gatsby plugin to hook up to our Sentry project.
In your gatsby-config.js
add:
{
resolve: 'gatsby-plugin-sentry',
options: {
dsn: process.env.SENTRY_DSN,
},
},
You’ll want to set up your Sentry DSN up as an environment variable because you don’t want your secret for your project being exposed. This means adding it to any CI/CD (Github Actions, TravisCI, etc.) or deployment (Netlify, Vercel, etc.) configurations as well.
Create the Error Boundary Component 🧩
We’re going to create an Error Boundary component to catch any errors in our application and use it to send the details to Sentry. Later we’re going to wrap a Gatsby layout component with our new error boundary so any page or post in your site will have the error boundary available.
Create a new file called ErrorBoundary.js
where you define your components in your project (for me this is in src/common/components
):
import React from 'react'
import PropTypes from 'prop-types'
import Sentry from 'gatsby-plugin-sentry'
class ErrorBoundary extends React.Component {
constructor(props) {
super(props)
this.state = { error: null }
}
componentDidCatch(error, errorInfo) {
this.setState({ error })
Sentry.configureScope((scope) => {
Object.keys(errorInfo).forEach((key) => {
scope.setExtra(key, errorInfo[key])
})
})
Sentry.captureException(error)
}
render() {
if (this.state.error) {
// render fallback UI
return <h1>Something went wrong!</h1>
} else {
// when there's not an error, render children untouched
return this.props.children
}
}
}
ErrorBoundary.propTypes = {
children: PropTypes.object.isRequired,
}
export default ErrorBoundary
Wrap Contents of Layout Component with Error Boundary
Now in your layout component import the new ErrorBoundary component:
import ErrorBoundary from '../components/ErrorBoundary'
Wrap whatever was in your Layout component with the ErrorBoundary component:
const Layout = (props) => (
+ <ErrorBoundary>
<React.Fragment>
<Helmet>
<body className="bg-white mid-gray" />
</Helmet>
<Navbar />
{props.children}
<Footer />
</React.Fragment>
+ </ErrorBoundary>
)
Conclusion
Just like that, you should be all setup. Make sure to keep an eye out for Sentry e-mails coming from your application and this will give you a great way to issues reported from your applications in production. Cheers 🍻!
Reference
この問題について(歩哨によるエラー監視), 我々は、より多くの情報をここで見つけました https://dev.to/chrisotto/gatsby-error-monitoring-with-sentry-31i4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol