亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue項(xiàng)目前端錯(cuò)誤收集之sentry教程詳解

 更新時(shí)間:2019年05月27日 14:17:19   作者:陽(yáng)呀呀  
Sentry 是一個(gè)開(kāi)源的錯(cuò)誤追蹤工具,可以幫助開(kāi)發(fā)人員實(shí)時(shí)監(jiān)控和修復(fù)系統(tǒng)中的錯(cuò)誤。這篇文章主要介紹了vue項(xiàng)目前端錯(cuò)誤收集之sentry,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

sentry簡(jiǎn)介

Sentry 是一個(gè)開(kāi)源的錯(cuò)誤追蹤工具,可以幫助開(kāi)發(fā)人員實(shí)時(shí)監(jiān)控和修復(fù)系統(tǒng)中的錯(cuò)誤。其專注于錯(cuò)誤監(jiān)控以及提取一切事后處理所需的信息;支持幾乎所有主流開(kāi)發(fā)語(yǔ)言( JS/Java/Python/php )和平臺(tái), 并提供了web來(lái)展示輸出錯(cuò)誤。

sentry官網(wǎng): https://sentry.io/

sentry安裝

sentry 是一個(gè)開(kāi)源的工具,可以自行搭建。

官方支持兩種安裝和運(yùn)行 Sentry 服務(wù)器的方法, Docker 和 Python 。推薦使用 Docker 。

當(dāng)然,對(duì)于剛開(kāi)始接觸 sentry 的同學(xué),也可以直接使用官方提供的免費(fèi)服務(wù),但是有一些限制。

下面先來(lái)介紹一下利用官方的免費(fèi)服務(wù),在前端項(xiàng)目中如何使用 sentry 。

如何在項(xiàng)目中使用sentry

1.首先需要在 sentry 的官網(wǎng)注冊(cè)一個(gè)賬號(hào)。注冊(cè)完選擇新建一個(gè)項(xiàng)目, sentry 支持多種框架,在其中選擇 vue 創(chuàng)建項(xiàng)目。我創(chuàng)建了一個(gè)名為test的項(xiàng)目。

 

 1. 創(chuàng)建項(xiàng)目頁(yè)面會(huì)自動(dòng)跳轉(zhuǎn)到如何配置vue項(xiàng)目頁(yè)面。接下來(lái)就按照指引在vue代碼里引入 sentry 。可以通過(guò) cdn 或者 npm 引入。我們采用 npm 引入。引入的時(shí)候需要給 init 函數(shù)傳遞一個(gè) dsn 參數(shù)。這個(gè)參數(shù)唯一指定了我們剛才創(chuàng)建的項(xiàng)目,在創(chuàng)建項(xiàng)目的時(shí)候系統(tǒng)會(huì)自動(dòng)生成。如果不傳這個(gè)參數(shù), sentry 不會(huì)發(fā)送錯(cuò)誤。

// main.js
import * as Sentry from '@sentry/browser';
import * as Integrations from '@sentry/integrations';
// 在生產(chǎn)環(huán)境中讓sentry報(bào)錯(cuò)
process.env.NODE_ENV === "production" && Sentry.init({
 dsn: 'https://1111a5bc59b54778b75f4e3a92f2e462@sentry.io/1447145',
 integrations: [
 new Integrations.Vue({
  Vue,
  attachProps: true,
 }),
 ],
});

在項(xiàng)目跟目錄下增加.sentryclirc文件,其中的token可以在左上角頭像里的api keys里面獲取。

[auth]
token="your token"

[defaults]
url = https://sentry.io
org = "your org"
project = test

然后我們?cè)诖a里制造一個(gè)錯(cuò)誤,就可以讓 sentry 捕獲了。本地如何模擬線上環(huán)境訪問(wèn)dist下的文件呢?需要裝一個(gè) http-server ,在dist文件夾下啟動(dòng)一個(gè)http服務(wù)就可以了。

npm i http-server 
cd dist
http-server -p 8888

注意:sentry捕獲到的錯(cuò)誤不會(huì)在打印在控制臺(tái)中。

在network中可以看到, sentry 發(fā)送了一個(gè)錯(cuò)誤請(qǐng)求,請(qǐng)求參數(shù)如下:

 

接下來(lái)我們就可以在后臺(tái)看到剛才上傳的錯(cuò)誤信息,同時(shí) sentry 也會(huì)給你的郵箱發(fā)送一封錯(cuò)誤郵件。

錯(cuò)誤信息查看

在后臺(tái)找到我們的test項(xiàng)目,點(diǎn)擊進(jìn)去就能看到多了一條錯(cuò)誤信息。

 

點(diǎn)擊信息可以進(jìn)入信息詳情進(jìn)行查看。

 

但是這個(gè)錯(cuò)誤信息是壓縮后的,不能定位到代碼的實(shí)際位置。使用意義不大,因此需要上傳 source-map 。

上傳source-map

上傳的方式有多種??梢酝ㄟ^(guò) sentry-cli 通過(guò)命令行的方式來(lái)上傳 source-map ,但是需要手動(dòng)上傳。也可以采用 webpack-plugin 這個(gè)插件,可以在 build 的同時(shí)自動(dòng)上傳 source-map 。本文采用自動(dòng)上傳策略。

項(xiàng)目配置:

// webpack.prod.conf
const SentryCliPlugin = require("@sentry/webpack-plugin");
plugins:[
 new SentryCliPlugin({
  include: "./dist",
  release: process.env.RELEASE_VERSION,
  configFile: "sentry.properties"
 })
]
// main.js
Sentry.init({
 dsn: "https://4ec86726f2ba40338f66837c6b959eed@sentry.io/1447158",
 integrations: [
  new Integrations.Vue({
   Vue,
   attachProps: true
  }),
  new Integrations.RewriteFrames()
 ],
 release: process.env.RELEASE_VERSION
});
// prod.env.js
"use strict";
const release = "test-1";
process.env.RELEASE_VERSION = release;
module.exports = {
 NODE_ENV: '"production"',
 RELEASE_VERSION: `"${release}"`
};

需要保證 plugins 和 Sentry.init 兩個(gè)配置中的 release 版本號(hào)相同,這樣的話 sentry 才能將 source-map 文件一一對(duì)應(yīng)上。

修改完之后我們重新build一下項(xiàng)目,build的過(guò)程比較慢:

 

之后我們?nèi)ズ笈_(tái)可以看見(jiàn)在版本中多了一個(gè) test-1 版本,也就是我們剛剛上傳的版本。

 

點(diǎn)進(jìn)去可以看見(jiàn)我們剛才上傳的 source-map 文件。

 

這時(shí)我們重新觸發(fā)一次錯(cuò)誤,就可以看到具體的出錯(cuò)位置了。

 

sentry關(guān)聯(lián)github

在設(shè)置->集成里面可以設(shè)置 sentry 關(guān)聯(lián)各種服務(wù),如 github、jira 等。關(guān)聯(lián)上 github 后,可以直接為該異常創(chuàng)建issue。

 

這樣在該異常的詳情頁(yè)就可以創(chuàng)建issue到 sentry 這個(gè)倉(cāng)庫(kù)了。

 

創(chuàng)建時(shí)可以選擇倉(cāng)庫(kù),名稱,詳情及指定給誰(shuí):

 

打開(kāi) github ,在 sentry 這個(gè)倉(cāng)庫(kù)下,發(fā)現(xiàn)多了一個(gè)issue,就是剛才我們創(chuàng)建的。

 

在我們向 github 提交 commit 的時(shí)候,如果加上了異常的id,例如這樣:

 

git commit -m 'Fixes TEST-3'

這樣在下次發(fā)版 build 的時(shí)候, sentry 會(huì)自動(dòng)將該異常的狀態(tài)從 unresolved 變成 resolved ,并會(huì)給出本次提交的 diff 地址。

 

搭建sentry服務(wù)

官方給出的有兩種方法可以自行搭建sentry:

•python
•docker

推薦使用docker。下面來(lái)介紹一下通過(guò)docker如何搭建sentry。

首先需要下載docker

mac桌面版地址: https://hub.docker.com/editions/community/docker-ce-desktop-mac

其中已經(jīng)集成了docker命令行、docker-compose等。

然后需要去github拉取 Sentry On-Premise ,這個(gè)是官方提供的通過(guò)docker安裝sentry的倉(cāng)庫(kù),里面介紹了如何一步一步搭建sentry。

創(chuàng)建服務(wù)步驟:

cd onpremise
// 創(chuàng)建本地?cái)?shù)據(jù)庫(kù)
docker volume create --name=sentry-data && docker volume create --name=sentry-postgres
// 創(chuàng)建環(huán)境配置文件
cp -n .env.example .env 
// 構(gòu)建docker服務(wù)
docker-compose build
// 產(chǎn)生秘鑰,將其作為SENTRY_SECRET_KEY加入到.env文件中
// 創(chuàng)建數(shù)據(jù)庫(kù),用交互式的提示生成管理員賬號(hào)
docker-compose run --rm web upgrade
// 啟動(dòng)所有服務(wù)
docker-compose up -d

如果過(guò)程一切正常的話,現(xiàn)在訪問(wèn)localhost:9000就能看到sentry的登錄頁(yè)面了,用剛才生成的管理員賬號(hào)密碼登錄即可。

 

以后的操作就跟上面介紹的一樣了。

注意事項(xiàng)

1.利用本地搭建的sentry創(chuàng)建項(xiàng)目的時(shí)候,發(fā)現(xiàn)dsn那一欄是空的,系統(tǒng)并沒(méi)有自動(dòng)生成。需要自己拼接這個(gè)dsn。它由以下幾部分組成,分別是協(xié)議、公鑰、私鑰、主機(jī)、路徑(一般為空)、項(xiàng)目id。
'{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}'
//類似這樣,把它放在sentry.init中的dsn即可

http://4cf10206ef27409bbb64f68b:a67a0eb5513e43ab883af3f3@localhost:9000/2

總結(jié)

以上所述是小編給大家介紹的vue項(xiàng)目前端錯(cuò)誤收集之sentry教程詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue的子組件props如何設(shè)置多個(gè)校驗(yàn)類型

    Vue的子組件props如何設(shè)置多個(gè)校驗(yàn)類型

    這篇文章主要介紹了Vue的子組件props如何設(shè)置多個(gè)校驗(yàn)類型問(wèn)題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue2導(dǎo)航根據(jù)路由傳值,而改變導(dǎo)航內(nèi)容的實(shí)例

    vue2導(dǎo)航根據(jù)路由傳值,而改變導(dǎo)航內(nèi)容的實(shí)例

    下面小編就為大家?guī)?lái)一篇vue2導(dǎo)航根據(jù)路由傳值,而改變導(dǎo)航內(nèi)容的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Vue解析剪切板圖片并實(shí)現(xiàn)發(fā)送功能

    Vue解析剪切板圖片并實(shí)現(xiàn)發(fā)送功能

    這篇文章主要介紹了Vue解析剪切板圖片并實(shí)現(xiàn)發(fā)送功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 手把手教你如何在vue項(xiàng)目中使用rem布局

    手把手教你如何在vue項(xiàng)目中使用rem布局

    公司內(nèi)部一直有大屏的需求,也一直再做,中途也踩了一些坑,但是沒(méi)有認(rèn)真的來(lái)總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于如何在vue項(xiàng)目中使用rem布局的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Vue集成百度地圖實(shí)現(xiàn)位置選擇功能

    Vue集成百度地圖實(shí)現(xiàn)位置選擇功能

    由于添加門(mén)店時(shí),需要選擇門(mén)店的省、市、區(qū)、詳細(xì)地址、以及門(mén)店的經(jīng)緯度信息,本文給大家分享Vue集成百度地圖實(shí)現(xiàn)位置選擇功能,感興趣的朋友一起看看吧
    2022-06-06
  • Vue.js@2.6.10更新內(nèi)置錯(cuò)誤處機(jī)制Fundebug同步支持相應(yīng)錯(cuò)誤監(jiān)控

    Vue.js@2.6.10更新內(nèi)置錯(cuò)誤處機(jī)制Fundebug同步支持相應(yīng)錯(cuò)誤監(jiān)控

    這篇文章主要介紹了Vue.js@2.6.10更新內(nèi)置錯(cuò)誤處機(jī)制,F(xiàn)undebug同步支持相應(yīng)錯(cuò)誤監(jiān)控 ,需要的朋友可以參考下
    2019-05-05
  • VUE的tab頁(yè)面切換的四種方法

    VUE的tab頁(yè)面切換的四種方法

    這篇文章主要介紹了VUE的tab頁(yè)面切換的四種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Vue實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)

    Vue實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • vue指令以及dom操作詳解

    vue指令以及dom操作詳解

    本篇文章主要介紹了vue指令以及dom操作詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Vue中進(jìn)行路由懶加載的示例詳解

    Vue中進(jìn)行路由懶加載的示例詳解

    路由懶加載是一種優(yōu)化Vue應(yīng)用程序性能的技術(shù),本文介紹了Vue中如何進(jìn)行路由懶加載,包括使用Vue異步組件和Webpack代碼分割,需要的朋友可以參考下
    2023-06-06

最新評(píng)論