เบกเบทเปเบเบตเปเบเปเบญเบเบเบฐเบเบญเบเบเปเบฒเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบดเบเบเบฒเบกเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบดเบเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ React. เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเปเบฒเบเบซเบเปเบฒเบเปเปเปเบเปเบเบทเบเบเปเบฒเปเบเปเปเบเบเบเบปเปเบงเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเบเบเบฒเบกเบเบงเบฒเบกเบเบดเบเบเบฒเบ. เบเบฒเบเบเปเบฅเบดเบชเบฑเบเบกเบฑเบเบเบฐเบเบดเบเบเบฒเบเบเบดเบเบเบฒเบก bug, เบเบฑเบเบเบทเบเปเบเบซเบฒเบกเบฑเบเบซเบผเบฑเบเบเบฒเบเปเบญเบเบฐเบชเบฒเบ, เบเบฒเบเบเบปเบเบชเบญเบ, เปเบฅเบฐเบญเบทเปเบเป. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฝเบเบเบฐเบฅเบดเบเบเบฐเบเบฑเบเบเบญเบเบเปเบฒเบเปเบซเปเบเบตเบเบถเปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฝเบเปเบเปเปเบฎเบฑเบเบกเบฑเบ!
1. เปเบเบฑเบเบซเบเบฑเบเบเปเบฒเบเบเปเบญเบเบเบฒเบ Sentry?
เบเปเบญเบเบชเบปเบกเบกเบธเบเบงเปเบฒเปเบเบปเปเบฒเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเปเบเบเบฒเบเบเบดเบเบเบฒเบกเปเบกเบเปเบกเปเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฐเบฅเบดเบ
เปเบเบปเปเบฒเบเบดเบเบงเปเบฒเบเบตเปเบเปเปเบเบฝเบเบเปเบเป?
เบเบปเบเบฅเบปเบ, เปเบซเปเปเบเบดเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ.
เปเบซเบเบเบปเบเบญเบฑเบเบเบฑเบเบเบปเปเบเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบตเปเบเบฐเปเบเป Sentry:
- เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบเบเบงเบฒเบกเบชเปเบฝเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบซเบฑเบเบเบตเปเบกเบตเบเบงเบฒเบกเบเบดเบเบเบฒเบ
- เบเปเบงเบ QA เบเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเบฅเบฐเบซเบฑเบ
- เปเบเปเบฎเบฑเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบเปเบงเบเปเบฝเบงเบเบฑเบเบเบฑเบเบซเบฒ
- เบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเปเบเปเปเบเบเปเปเบเบดเบเบเบฒเบเบขเปเบฒเบเปเบงเบงเบฒ
- เปเบเปเบฎเบฑเบเบเบฒเบเบชเบฐเปเบเบเบเปเปเบเบดเบเบเบฒเบเบเบตเปเบชเบฐเบเบงเบเปเบเบเบฐเบเบฒเบ admin
- เบเบฑเบเบฎเบฝเบเบเปเปเบเบดเบเบเบฒเบเบเบฒเบกเบเบฒเบเบชเปเบงเบเบเบนเปเปเบเป/เบเบฃเบฒเบงเปเบเบต
เปเบซเบเบเบปเบเบซเบผเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเบเบเบฒเบ CEO/Lead
- เบเบฐเบซเบเบฑเบเปเบเบดเบ (Sentry เบชเบฒเบกเบฒเบเบเบดเบเบเบฑเปเบเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเปเบฒเบ)
- เปเบเปเบฎเบฑเบเบเปเบฒเบเบดเบเบปเบกเบเบญเบเบเบนเปเปเบเป
- เปเบเบปเปเบฒเปเบเบชเบดเปเบเบเบตเปเบเบดเบเบเบฒเบเบเบฑเบเปเบเบเบเบฒเบเบเบญเบเปเบเบปเปเบฒเปเบเปเบงเบฅเบฒเบเบดเบ
- เบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบเปเบฝเบงเบเบฑเบเบเปเบฒเบเบงเบเบเบญเบเบเบฑเบเบซเบฒเบเบตเปเบเบฐเบเบฒเบเบปเบเบกเบตเบเบฑเบ app เบเบญเบเบเปเบฒเบ
- เบเปเบงเบเปเบซเปเบเปเบฒเบเบเบญเบเบซเบฒเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเปเบฒเบเปเบฎเบฑเบเบเบดเบเบเบฒเบ
เบเปเบญเบเบเบดเบเบงเปเบฒเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบฐเบชเบปเบเปเบเปเบเบเบปเบเบเบงเบฒเบกเบเบตเปเบเปเบญเบ. เบเบญเบเบเบฑเปเบเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเปเบซเบเบเบปเบเบเบตเปเปเบเบทเปเบญเบเบฑเบเบเบงเบเปเบซเปเบเบฒเบเบเปเบฒเบเบเบญเบเบเปเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบ Sentry.
เบเบปเปเบเบฅเบฐเบกเบฑเบเบฅเบฐเบงเบฑเบเบเบฑเบเบฅเบฒเบเบเบฒเบเบชเบธเบเบเปเบฒเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบธเบฅเบฐเบเบดเบ.
เปเบเบปเปเบฒเบชเบปเบเปเบเปเบฅเปเบงเบเป?
Sentry เปเบกเปเบเบซเบเบฑเบ?
Sentry เปเบกเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเปเบเบเบดเบเบเบฒเบกเปเบกเบเปเบกเปเบเบตเปเปเบเบตเบเปเบซเบผเปเบเบเบตเปเบเปเบงเบเปเบซเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบดเบเบเบฒเบก เปเบฅเบฐเปเบเปเปเบเบเบฒเบเบเบฑเบเบเปเบญเบเปเบเปเบงเบฅเบฒเบเบดเบ. เบขเปเบฒเบฅเบทเบกเบงเปเบฒเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเบงเบเปเบซเปเบเปเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเปเบฅเบฐเบเบฑเบเบเบธเบเบเบฐเบชเบปเบเบเบฒเบเบเบญเบเบเบนเปเปเบเป. Sentry เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบ JavaScript, Node, Python, PHP, Ruby, Java เปเบฅเบฐเบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบผเปเบเบผเบกเบญเบทเปเบเป.
2. เปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเปเบฅเบฐเบชเปเบฒเบเปเบเบเบเบฒเบ
- เปเบเบตเบเบเบฑเบเบเบต Sentry เบเบญเบเบเปเบฒเบ. เบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ. (เบเบฐเบฅเบธเบเบฒเบชเบฑเบเปเบเบเบงเปเบฒ Sentry เบชเบฒเบกเบฒเบเบเบดเบเบเบฑเปเบเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบเปเบฒเบ)
- เบเบฑเปเบเบเบญเบเบเปเปเปเบเปเบกเปเบเบเบฒเบเบชเปเบฒเบเปเบเบเบเบฒเบ
- เปเบฅเบทเบญเบเบเบฒเบชเบฒเบเบญเบเบเปเบฒเบเบเบฒเบเบฅเบฒเบเบเบฒเบ. (เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบฅเบทเบญเบ React. เบเบฅเบดเบ "เบชเปเบฒเบเปเบเบเบเบฒเบ")
เบเบฑเบเปเบเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบญเบเบเปเบฒเบ. เบเบปเบงเบขเปเบฒเบเบเบทเปเบเบเบฒเบเบเบญเบเบงเบดเบเบตเบเบฒเบเบฅเบงเบก Sentry เปเบเบปเปเบฒเปเบเปเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบเปเบฒเบเบฅเบธเปเบกเบเบตเป:
import * as Sentry from '@sentry/browser';
// Sentry.init({
// dsn: "<https://[email protected]/1432138>"
// });
// should have been called before using it here
// ideally before even rendering your react app
class ExampleBoundary extends Component {
constructor(props) {
super(props);
this.state = { error: null };
}
componentDidCatch(error, errorInfo) {
this.setState({ error });
Sentry.withScope(scope => {
Object.keys(errorInfo).forEach(key => {
scope.setExtra(key, errorInfo[key]);
});
Sentry.captureException(error);
});
}
render() {
if (this.state.error) {
//render fallback UI
return (
<a onClick={() => Sentry.showReportDialog()}>Report feedback</a>
);
} else {
//when there's not an error, render children untouched
return this.props.children;
}
}
}
Sentry เบกเบตเบเบปเบงเบเปเบงเบเบเบตเปเบกเบตเบเบฐเปเบซเบเบเปเบเบทเปเบญเบเปเบงเบเปเบซเปเบเปเบฒเบเบเบดเบเบญเบญเบเบงเปเบฒเบเปเบฒเบเบเบงเบเบเบฐเปเบฎเบฑเบเปเบเบงเปเบเบเปเปเปเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบเบฑเปเบเบเบญเบเปเบซเบผเบปเปเบฒเบเบตเป. เบเปเบญเบเบเปเบญเบเบเบฒเบเบชเบฐเปเบเบเบงเบดเบเบตเบเบฒเบเบชเปเบฒเบเบเบปเบงเบเบฑเบเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบญเบดเบเบเบญเบเปเบเบปเปเบฒ. เบเบดเปเบเปเบซเบเป, เบเบงเบเปเบฎเบปเบฒเปเบเปเบชเปเบฒเบเปเบเบเบเบฒเบ! เบเปเปเบซเปเบเปเบฒเบงเปเบเบชเบนเปเบเบฑเปเบเบเบญเบเบเปเปเปเบ
3. เบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบ React เปเบฅเบฐ Sentry
เบเปเบฒเบเบเปเบญเบเบเบดเบเบเบฑเปเบเปเบเบฑเบเปเบเบฑเบ npm เปเบเปเบเบเบเบฒเบเบเบญเบเบเปเบฒเบ.
npm i @sentry/browser
เปเบฅเบตเปเบกเบเบปเปเบ Sentry เปเบเบเบฑเบเบเบญเบเบเปเบฒเบ:
Sentry.init({
// dsn: #dsnUrl,
});
DSN เปเบกเปเบเบขเบนเปเปเบเปเบเบเบเบฒเบ -> เบเบฒเบเบเบฑเปเบเบเปเบฒ -> เบฅเบนเบเบเปเบฒเบเบต. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบฅเบฐเบซเบฑเบเบฅเบนเบเบเปเบฒเปเบเปเบเบเบเบปเปเบเบซเบฒ.
componentDidCatch(error, errorInfo) {
Sentry.withScope(scope => {
Object.keys(errorInfo).forEach(key => {
scope.setExtra(key, errorInfo[key]);
});
Sentry.captureException(error);
});
}
4. เบเบฒเบเบเบดเบเบเบฒเบกเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบญเบดเบ
เบเบปเบงเบขเปเบฒเบ, เบเปเบญเบเปเบเปเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบเบเปเบเบเบเปเบฒเบเปเบเบฑเบ Deezer API. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบกเบฑเบ
เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบเบธเปเบกเบเบตเปเปเบเบซเบฒ console.log ั user.email. เบซเบผเบฑเบโเบเบฒเบโเบเบฒเบโเบเปเบฒโเปเบเบตเบโเบเบฒเบโเบเบตเปโเบเบงเบโเปเบฎเบปเบฒโเบเบงเบโเบเบฐโเปเบเปโเบฎเบฑเบโเบเปเปโเบเบงเบฒเบกโเบเบดเบโเบเบฒเบโ: Uncaught TypeError (เบเปเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเบเบธเบเบชเบปเบกเบเบฑเบเบเบฒเบ undefined email
) เปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบงเบฑเบเบเบธเบเบญเบเบเบนเปเปเบเป. เบเบญเบเบเบฑเปเบเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป เบเปเปเบเบปเบเปเบงเบฑเปเบ Javascript.
<button type="button" onClick={() => console.log(user.email)}>
Test Error button
</button>
เบเบนเปเบเบญเบเปเบเบเปเบเบตเบเบฑเบเปเบปเบเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบฑเปเบเบเบตเป:
import React, { Component } from "react";
import { connect } from "react-redux";
import { Input, List, Skeleton, Avatar } from "antd";
import * as Sentry from "@sentry/browser";
import getList from "../store/actions/getList";
const Search = Input.Search;
const mapState = state => ({
list: state.root.list,
loading: state.root.loading
});
const mapDispatch = {
getList
};
class Container extends Component {
constructor(props) {
super(props);
Sentry.init({
dsn: "https://[email protected]/1417586",
});
}
componentDidCatch(error, errorInfo) {
Sentry.withScope(scope => {
Object.keys(errorInfo).forEach(key => {
scope.setExtra(key, errorInfo[key]);
});
Sentry.captureException(error);
});
}
render() {
const { list, loading, getList } = this.props;
const user = undefined;
return (
<div className="App">
<button
type="button"
onClick={() => console.log(user.email)}
>
test error1
</button>
<div onClick={() => Sentry.showReportDialog()}>Report feedback1</div>
<h1>Music Finder</h1>
<br />
<Search onSearch={value => getList(value)} enterButton />
{loading && <Skeleton avatar title={false} loading={true} active />}
{!loading && (
<List
itemLayout="horizontal"
dataSource={list}
locale={{ emptyText: <div /> }}
renderItem={item => (
<List.Item>
<List.Item.Meta
avatar={<Avatar src={item.artist.picture} />}
title={item.title}
description={item.artist.name}
/>
</List.Item>
)}
/>
)}
</div>
);
}
}
export default connect(
mapState,
mapDispatch
)(Container);
เบซเบผเบฑเบเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบธเปเบกเบเบตเป, เบเปเบฒเบเบเบงเบเบเบปเบเบชเบญเบเบกเบฑเบเบขเบนเปเปเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบ.
เบเบงเบเปเบฎเบปเบฒเบกเบตเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบญเบดเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ
เบงเปเบฒเบง!
เบเปเบฒเบเปเบฒเบเบเบฅเบดเบเปเบชเปเบเบงเบฒเบกเบเบดเบเบเบฒเบ header, เบเปเบฒเบเบเบฐเปเบซเบฑเบเปเบเบฑเบ stack trace.
เบเปเปเบเบงเบฒเบกเปเบเบดเปเบเบเปเปเบเบต. เปเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบซเบฑเบเบเปเปเบเบงเบฒเบกเบชเบฐเปเบเบเบเปเปเบเบดเบเบเบฒเบเปเบเบเบเปเปเปเบเบปเปเบฒเปเบเบงเปเบฒเบฅเบฐเบซเบฑเบเบขเบนเปเปเบช. เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเปเบเบเบเบตเปเปเบซเบผเปเบเปเบ ReactJS เปเบเบฒเบฐเบงเปเบฒเบเบงเบเบกเบฑเบเบเปเปเปเบเปเบเบทเบเบเบฑเปเบเบเปเบฒ.
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฑเบเบขเบฒเบเบเบฐเปเบซเปเบเปเบฒเปเบเบฐเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบเบเบตเปเปเบซเบผเปเบ, เปเบเปเบกเบฑเบเบเบฐเปเบฎเบฑเบเปเบซเปเบเบปเบเบเบงเบฒเบกเบเบตเปเบเบฒเบงเบเบงเปเบฒเบเบตเปเบเปเบญเบเบเบฑเปเบเปเบ.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเบถเบเบชเบฒเบซเบปเบงเบเปเปเบเบตเป
5. เบเบฒเบ เบเบณ เปเบเป เบเบฐเบซเบฒเบเปเบฎเบทเบญ เบเบฑเบเบเบธเบเบชเบดเปเบเบชเบธเบ API
เบเบปเบโเบฅเบปเบ. เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบงเบกเปเบญเบปเบฒเบเปเปเบเบปเบเปเบงเบฑเปเบ javascript เปเบเบงเบฑเบเบเบตเปเบเปเบฒเบเบกเบฒ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบฎเบฑเบเปเบเบงเปเบเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ XHR?
Sentry เบเบฑเบเบกเบตเบเบฒเบเบเบฑเบเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบเบเบณเบเบปเบเปเบญเบ. เบเปเบญเบเปเบเปเบกเบฑเบเปเบเบทเปเบญเบเบดเบเบเบฒเบกเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบญเบ api.
Sentry.captureException(err)
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเปเบเปเบเบเบทเปเบเบงเบฒเบกเบเบดเบเบเบฒเบ, เบฅเบฐเบเบฑเบ, เปเบเบตเปเบกเบเปเปเบกเบนเบ, เบเปเปเบกเบนเบเบเบนเปเปเบเปเบเบตเปเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบเปเบเบเปเบเปเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเปเบฒเบ, เบญเบตเปเบกเบง, เปเบฅเบฐเบญเบทเปเบเป.
superagent
.get(`https://deezerdevs-deezer.p.rapidapi.com/search?q=${query}`)
.set("X-RapidAPI-Key", #id_key)
.end((err, response) => {
if (err) {
Sentry.configureScope(
scope => scope
.setUser({"email": "[email protected]"})
.setLevel("Error")
);
return Sentry.captureException(err);
}
if (response) {
return dispatch(setList(response.body.data));
}
});
เบเปเบญเบเบขเบฒเบเปเบเปเบเบฑเบเบเบฑเบเบเบปเปเบงเปเบเบชเปเบฒเบฅเบฑเบ API เบเบฑเบ.
import * as Sentry from "@sentry/browser";
export const apiCatch = (error, getState) => {
const store = getState();
const storeStringify = JSON.stringify(store);
const { root: { user: { email } } } = store;
Sentry.configureScope(
scope => scope
.setLevel("Error")
.setUser({ email })
.setExtra("store", storeStringify)
);
// Sentry.showReportDialog(); - If you want get users feedback on error
return Sentry.captureException(error);
};
เบเปเบฒเปเบเบปเปเบฒเบเบฑเบเบเบฑเบเบเบตเปเปเบเบเบฒเบเปเบ api เบเบญเบเบเปเบฒเบ.
export default query => (dispatch, getState) => {
superagent
.get(`https://deezerdevs-deezer.p.rapidapi.com/search?q=${query}`)
.set("X-RapidAPI-Key", #id_key)
.end((error, response) => {
if (error) {
return apiCatch(error, getState)
}
if (response) {
return dispatch(setList(response.body.data));
}
});
};
เปเบซเปโเบเบงเบโเปเบเบดเปเบโเบงเบดโเบเบตโเบเบฒเบโ:
- เบฅเบฐเบเบฑเบ เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเปเบชเปเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบฅเบฐเบเบฑเบเปเบเบปเปเบฒเปเบเปเบ dashboard sentry. เบกเบฑเบเบกเบตเบเบธเบเบชเบปเบกเบเบฑเบ - 'fatal', 'error', 'warning', 'log', 'info, 'debug', 'critical').
- setUser เบเปเบงเบเบเบฑเบเบเบถเบเบเปเปเบกเบนเบเบเบนเปเปเบเปเปเบเป (id, เบเบตเปเบขเบนเปเบญเบตเปเบกเบง, เปเบเบเบเบฒเบเบเปเบฒเบเปเบเบดเบ, เปเบฅเบฐเบญเบทเปเบเป).
- setExtra เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบฅเบฐเบเบธเบเปเปเบกเบนเบเปเบเปเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ, เบเบปเบงเบขเปเบฒเบ, เปเบเบฑเบเบฎเบฑเบเบชเบฒ.
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเปเบฎเบฑเบเบเปเบฒเบเบดเบเบปเบกเบเบญเบเบเบนเปเปเบเปเบเปเบฝเบงเบเบฑเบเบเปเปเบเบดเบเบเบฒเบ, เบเปเบฒเบเบเบงเบเปเบเปเบเบฑเบเบเบฑเบ showReportDialog.
Sentry.showReportDialog();
เบชเบฐเบซเบผเบธเบ:
เบกเบทเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบญเบฐเบเบดเบเบฒเบเบงเบดเบเบตเบซเบเบถเปเบเบเบตเปเบเบฐเบฅเบงเบก Sentry เปเบเบปเปเบฒเปเบเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ React.
โ Telegram เบชเบปเบเบเบฐเบเบฒเปเบเบ
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com