成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel學(xué)習(xí)筆記之Errors Tracking神器——Sentry

xiguadada / 2097人閱讀

摘要:中異常處理類主要包含兩個(gè)方法和,其中就是主要用來向第三方發(fā)送異常報(bào)告,這里選擇向這個(gè)神器發(fā)送異常報(bào)告,并使用通知開發(fā)人員。通過也能發(fā)現(xiàn)的執(zhí)行流程。

說明:Laravel學(xué)習(xí)筆記之bootstrap源碼解析中聊異常處理時(shí)提到過Sentry這個(gè)神器,并打算以后聊聊這款神器,本文主要就介紹這款Errors Tracking神器Sentry,Sentry官網(wǎng)有一句話個(gè)人覺得帥呆了:

Stop hoping your users will report errors.

Sentry是一款可用于Production環(huán)境的錯(cuò)誤跟蹤工具,可實(shí)時(shí)通知Production環(huán)境中用戶由于一些不可預(yù)料行為(或者程序?qū)懙挠袉栴})導(dǎo)致程序Crash或Exception,Sentry可以通過Integration如HipChat來發(fā)送通知,并且可以通過JIRA Integration來快速創(chuàng)建Issue,然后開發(fā)者可以根據(jù)這個(gè)Issue快速修復(fù)程序,并把這個(gè)已修復(fù)的Hotfix快速部署到生產(chǎn)環(huán)境,這樣就快速開發(fā)快速修補(bǔ)。天下武功,唯快不破。

本文主要推薦下這款神器,并介紹下它的安裝和配置,有興趣的可以關(guān)注下這款神器。并且這款神器已經(jīng)在我司RightCapital得到長(zhǎng)時(shí)間應(yīng)用了,結(jié)合HipChat和JIRA用起來很順手,值得推薦。

開發(fā)環(huán)境:Laravel5.3 + PHP7

Sentry安裝與配置

使用Sentry有兩種方式:Sentry Cloud和Sentry Server。Sentry Cloud就是直接使用Sentry提供的服務(wù),注冊(cè)個(gè)賬號(hào)后然后進(jìn)行設(shè)置就可以使用了,這樣Production Code就會(huì)把Exception這些敏感數(shù)據(jù)發(fā)送到Sentry Cloud,不過公司使用不建議這么做,畢竟這些Exceptions是有很多敏感數(shù)據(jù),而這些數(shù)據(jù)是放在別人家的云服務(wù)器上,誰知道會(huì)發(fā)生什么呢;Sentry Server是Python寫的,可以部署在自己的云服務(wù)器上如AWS或Aliyun,如我司是部署在AWS云上,Sentry官方推薦使用Docker Image來部署。當(dāng)然,不管哪一種方式,使用還是一樣的。就有點(diǎn)像Github/Gitlab、Bitbucket/Bitbucket Server。

這里就介紹下Sentry Cloud如何使用,只有一個(gè)用戶時(shí),Sentry每天免費(fèi)5000 events:

首先是注冊(cè)個(gè)賬號(hào)。這個(gè)去官網(wǎng)注冊(cè)下就OK了。

安裝Sentry包。Sentry提供針對(duì)幾乎每種語言的平臺(tái)Sentry Platform,這里介紹下如何在Laravel程序中集成Sentry。

Sentry for Laravel中介紹了如何集成進(jìn)Laravel,主要就是安裝下Sentry Laravel包:

// 生產(chǎn)環(huán)境也需要這個(gè)包,不需要加 --dev
composer require sentry/sentry-laravel

"providers" => array(
    SentrySentryLaravelSentryLaravelServiceProvider::class,
)

"aliases" => array(
    "Sentry" => SentrySentryLaravelSentryFacade::class,
)

php artisan vendor:publish --provider="SentrySentryLaravelSentryLaravelServiceProvider"

在自己的程序中安裝好包后,然后在.env配置下SENTRY_DSN。登錄進(jìn)剛剛注冊(cè)的賬號(hào)后,先創(chuàng)建個(gè)Project得到這個(gè)Project的SENTRY_DSN(點(diǎn)擊 New Project):

然后點(diǎn)擊左上角選擇剛剛創(chuàng)建的Project如個(gè)人創(chuàng)建的Sentry/Development,然后點(diǎn)擊左側(cè)欄的Client Keys就行,把DSN值copy出來填入.env文件中(不是DSN Public值),Sentry_DSN結(jié)構(gòu)是:https://{public_key}:{private_key}@sentry.io/{project_id}

// .env
SENTRY_DSN=Your_Sentry_DSN

同時(shí)在Add Integrations,點(diǎn)擊左側(cè)All Integrations選擇HipChat后,然后選擇左側(cè)的HipChat按鈕,選擇Enable Integration,這樣就跳入了HipChat中Integration頁面,同意集成就行,如果沒注冊(cè)HipChat賬號(hào)就注冊(cè)下就行,HipChat是Atlassian旗下的一款免費(fèi)的聊天協(xié)作工具,電腦端手機(jī)端都可以安裝,值得推薦。當(dāng)然,Atlassian全家桶SourceTree(免費(fèi))、JIRA(免費(fèi)/收費(fèi))、Bitbucket(免費(fèi)/收費(fèi))、Confluence(免費(fèi)/收費(fèi))、Bamboo(免費(fèi)/收費(fèi))也都值得推薦。

Laravel中異常處理類AppExceptionsHandler主要包含兩個(gè)方法report()sender(),其中report()就是主要用來向第三方service發(fā)送異常報(bào)告,這里選擇向Sentry這個(gè)神器發(fā)送異常報(bào)告,并使用HipChat通知開發(fā)人員。這里在report()寫上代碼:

    /**
     * A list of the exception types that should not be reported.
     *
     * @var array
     */
    protected $dontReport = [
//        IlluminateAuthAuthenticationException::class,
//        IlluminateAuthAccessAuthorizationException::class,
//        SymfonyComponentHttpKernelExceptionHttpException::class,
//        IlluminateDatabaseEloquentModelNotFoundException::class,
//        IlluminateSessionTokenMismatchException::class,
//        IlluminateValidationValidationException::class,
    ];

    /**
     * Report or log an exception.
     *
     * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
     *
     * @param  Exception  $exception
     * @return void
     */
    public function report(Exception $exception)
    {
        // If the exception is instanceOf $dontReport, do not report it.
        if ($this->shouldntReport($exception)) {
            return;
        }

        // Send exception to Sentry if it is set.
        if (env("SENTRY_DSN")) {
            Sentry::captureException($exception);
        } else {
            // Log the exception if the Sentry is not set.
            parent::report($exception);
        }
    }

shouldntReport()會(huì)讀取$dontReport[ ]值,查找有哪些Exceptions是不需要Report的,在生產(chǎn)環(huán)境可以都注銷掉,表示用戶產(chǎn)生的所有異常都需要發(fā)送到Sentry中,并通過手機(jī)端HipChat告知開發(fā)者,然后使用Sentry::captureException()捕獲異常。當(dāng)然有時(shí)由于業(yè)務(wù)需求,如根據(jù)不同模塊報(bào)異常level不一樣,需要定制下Sentry類,這里只是簡(jiǎn)單捕獲異常,并默認(rèn)為都是error level。

OK,所有的工作就這么簡(jiǎn)單的完成了。

試一下,如在瀏覽器中輸入一個(gè)不存在的路由如http://sentry.app:8888/sentry,然后報(bào)NotFoundHttpException,查看Sentry有沒有捕獲到:

然后查看HipChat有沒有收到通知:

這里每一次report就是一個(gè)event,Sentry對(duì)于個(gè)人使用是每天免費(fèi)5000 events。

Sentry的Exception Stack內(nèi)容很詳細(xì),很快就能定位bug在哪,而且還捕獲了很多tags,如用戶的device,browser,environment等等有用信息,這些信息都可以用來快速定位bug。通過Exception Stack也能發(fā)現(xiàn)Laravel的執(zhí)行流程。

總結(jié):本文主要介紹一款異常捕獲神器Sentry,值得推薦,具體使用可以深挖Sentry官網(wǎng)文檔和博客,這種提高生產(chǎn)率的神器必須深挖。
我司最近需要一名伙伴一起共同航海去,有興趣速來Profile。

歡迎關(guān)注Laravel-China。

RightCapital招聘Laravel DevOps

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30500.html

相關(guān)文章

  • laravel sentry

    摘要:注冊(cè)登錄登錄創(chuàng)建選擇安裝擴(kuò)展使用方法來自配置獲取測(cè)試少寫個(gè)分號(hào)查看效果發(fā)送到對(duì)象當(dāng)方法調(diào)用時(shí)執(zhí)行資源你也可以本地搭建之部署到生產(chǎn)環(huán)境搭建自己的服務(wù)基于安裝自 注冊(cè)登錄 GitHub登錄showImg(https://segmentfault.com/img/bVbgcrL?w=1109&h=554); 創(chuàng)建project 選擇 laravelshowImg(https://segme...

    tinysun1234 評(píng)論0 收藏0
  • Laravel學(xué)習(xí)筆記bootstrap源碼解析

    摘要:總結(jié)本文主要學(xué)習(xí)了啟動(dòng)時(shí)做的七步準(zhǔn)備工作環(huán)境檢測(cè)配置加載日志配置異常處理注冊(cè)注冊(cè)啟動(dòng)。 說明:Laravel在把Request通過管道Pipeline送入中間件Middleware和路由Router之前,還做了程序的啟動(dòng)Bootstrap工作,本文主要學(xué)習(xí)相關(guān)源碼,看看Laravel啟動(dòng)程序做了哪些具體工作,并將個(gè)人的研究心得分享出來,希望對(duì)別人有所幫助。Laravel在入口index...

    xiaoxiaozi 評(píng)論0 收藏0
  • Laravel學(xué)習(xí)筆記Filesystem-從Dropbox中下載文件到AWS S3

    摘要:說明本文主要講述了的文件系統(tǒng)的小,邏輯不復(fù)雜,主要就是把上的一個(gè)文件下載到本地,和下載到中。寫驅(qū)動(dòng)由于沒有驅(qū)動(dòng),需要自定義下在中寫上名為的驅(qū)動(dòng)同時(shí)在注冊(cè)下該就行。執(zhí)行命令后,顯示上文件從上下載到上的文件該邏輯簡(jiǎn)單,但很好玩。 說明:本文主要講述了Laravel的文件系統(tǒng)Filesystem的小Demo,邏輯不復(fù)雜,主要就是把Dropbox上的一個(gè)文件下載到本地local,和下載到AWS...

    tylin 評(píng)論0 收藏0
  • Laravel學(xué)習(xí)筆記Session源碼解析(下)

    摘要:實(shí)際上,在中關(guān)閉主要包括兩個(gè)過程保存當(dāng)前到介質(zhì)中在中存入。,學(xué)習(xí)下關(guān)閉的源碼吧先??傊?,關(guān)閉的第二件事就是給添加。通過對(duì)的源碼分析可看出共分為三大步啟動(dòng)操作關(guān)閉??偨Y(jié)本小系列主要學(xué)習(xí)了的源碼,學(xué)習(xí)了的三大步。 說明:在中篇中學(xué)習(xí)了session的CRUD增刪改查操作,本篇主要學(xué)習(xí)關(guān)閉session的相關(guān)源碼。實(shí)際上,在Laravel5.3中關(guān)閉session主要包括兩個(gè)過程:保存當(dāng)前U...

    Awbeci 評(píng)論0 收藏0
  • Laravel學(xué)習(xí)筆記Two-Factor Authentication神器——Duo

    摘要:在登錄后臺(tái)時(shí)也是必須認(rèn)證才行。使用這種總比粗暴的限制訪問來保護(hù)安全要高效的多,一切都是為了自動(dòng)化,為了提高生產(chǎn)率??偨Y(jié)本文主要學(xué)習(xí)使用這個(gè)神器來做,并學(xué)習(xí)了如何使用集成進(jìn)程序中。我司最近需要一名伙伴一起共同航海去,有興趣速來。 說明:本文主要研究利用Duo來實(shí)現(xiàn)雙重認(rèn)證,Two-Factor Authentication就是除了username-password這種登錄認(rèn)證之外,還使用...

    hoohack 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<