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

資訊專欄INFORMATION COLUMN

laravel sentry

tinysun1234 / 3083人閱讀

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

注冊(cè)登錄

GitHub登錄

創(chuàng)建project 選擇 laravel

安裝擴(kuò)展使用

composer require sentry/sentry-laravel

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

public function report(Exception $exception)
{
    if (app()->bound("sentry") && $this->shouldReport($exception)) {
        app("sentry")->captureException($exception);
    }

    parent::report($exception);
}

vi config/sentry.php
return array(
    "dsn" => env("DSN"),

    // capture release as git sha
    // "release" => trim(exec("git log --pretty="%h" -n1 HEAD")),

    // Capture bindings on SQL queries
    "breadcrumbs.sql_bindings" => true,

    // Capture default user context
    "user_context" => false,

    //transport function https://docs.sentry.io/clients/php/config/
    "transport"=>new AppSentryTransport(),
);

vi /app/SentryTransport.php
namespace App;
//
class SentryTransport
{
    public static function __set_state($array){
        return function($raven_client,$data){
            Queue::pushOn("sentry_log",new AppCommandssentry($raven_client,$data));
        };
    }
}
vi app/commands/sentry.php
class sentry extends Command implements SelfHandling, ShouldBeQueued {

    use InteractsWithQueue, SerializesModels;

    private $raven_client;
    protected $data;
    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct($raven_client, $data)
    {
        $raven_client->setTransport(null);
        $raven_client->close_curl_resource();
        $this->raven_client=$raven_client;
        $this->data=$data;
    }

    /**
     * Execute the command.
     *
     * @return void
     */
    public function handle()
    {
        $this->raven_client->send($this->data);//send方法來(lái)自 /vendor/sentry/sentry/lib/Raven/Client.php:1019
    }

}

vi /vendor/sentry/sentry/lib/Raven/Client.php
public function send(&$data)
    {
        if (is_callable($this->send_callback)
            && call_user_func_array($this->send_callback, array(&$data)) === false
        ) {
            // if send_callback returns false, end native send
            return;
        }

        if (!$this->server) {
            return;
        }

        if ($this->transport) {
            call_user_func($this->transport, $this, $data);
            return;
        }

        // should this event be sampled?
        if (rand(1, 100) / 100.0 > $this->sample_rate) {
            return;
        }

        $message = $this->encode($data);

        $headers = array(
            "User-Agent" => static::getUserAgent(),
            "X-Sentry-Auth" => $this->getAuthHeader(),
            "Content-Type" => "application/octet-stream"
        );

        $this->send_remote($this->server, $message, $headers);
    }
配置dsn

獲取 dsn

測(cè)試

少寫個(gè)分號(hào),查看效果

monolog 發(fā)送到sentry
composer require monolog/monolog

vi config/app.php

"AppProviderssentrylog" 

vi AppProviderssentrylog.php

use MonologHandlerRedisHandler;
use MonologFormatterJsonFormatter;
use MonologFormatterLineFormatter;
use MonologProcessorMemoryPeakUsageProcessor;
use MonologProcessorWebProcessor;
use MonologHandlerRavenHandler;

class sentrylog extends ServiceProvider {

    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot() {
        $logger = Log::getMonolog();
        $handler = new RedisHandler($redis, "sentry:monolog", MonologLogger::DEBUG);
        $handler->setFormatter(new JsonFormatter(JsonFormatter::BATCH_MODE_NEWLINES, true));
        $handler->pushProcessor(new MemoryPeakUsageProcessor(true));
        /*$logger->pushProcessor(function ($record) {
            $record["extra"]["dummy"] = "Hello world!";

            return $record;
        });
        class MemoryPeakUsageProcessor extends MemoryProcessor
{
    /**
     * @param  array $record 對(duì)象當(dāng)方法調(diào)用時(shí)執(zhí)行
     * @return array
     */
    public function __invoke(array $record)
    {
        $bytes = memory_get_peak_usage($this->realUsage);
        $formatted = $this->formatBytes($bytes);

        $record["extra"]["memory_peak_usage"] = $formatted;

        return $record;
    }
}*/
            $arr = [
                "uri" => "REQUEST_URI",
                "ip" => "REMOTE_ADDR",
                "method" => "REQUEST_METHOD",
                "query_string" => "QUERY_STRING",
                "cookie" => "HTTP_COOKIE",
                "host" => "HTTP_HOST",
            ];
        $handler->pushProcessor(new WebProcessor(null, $arr));
        $logger->pushHandler($handler);
            
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register() {
        //
    }

}
vi app/commands/sentry_monolog.php

use MonologHandlerRavenHandler;
        while (true) {
            $data = $redis->lpop("sentry:monolog");
            if (!$data) {
                sleep(5);
                continue;
            }
            $data = json_decode($data, true);
            $raven_client= new Raven_Client($dsn,["extra" => $data["extra"]]);
            $raven_hanlder = new RavenHandler($raven_client);
            $raven_hanlder->handle($data);//https://pagerefresh.co.uk/apigen/monolog/class-Monolog.Handler.RavenHandler.html vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php:handle  vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php :write
            $raven_client->__destruct();
            }
資源

你也可以本地搭建
Sentry 之部署到生產(chǎn)環(huán)境
搭建自己的 sentry 服務(wù)
CentOS6 基于 Python 安裝 Sentry
Sentry 自動(dòng)化異常提醒
Laravel學(xué)習(xí)筆記之Errors Tracking神器——Sentry
sentry使用
利用 entry/onpremise 搭建一個(gè) Sentry 異常匯總工具
高效利用Sentry追蹤日志發(fā)現(xiàn)問(wèn)題
sentry monolog
Sentry - 處理異常日志的正確姿勢(shì)
Sentry監(jiān)控Django應(yīng)用并使用email+釘釘通知
搭建私有的前端監(jiān)控服務(wù): sentry

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

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

相關(guān)文章

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

    摘要:中異常處理類主要包含兩個(gè)方法和,其中就是主要用來(lái)向第三方發(fā)送異常報(bào)告,這里選擇向這個(gè)神器發(fā)送異常報(bào)告,并使用通知開發(fā)人員。通過(guò)也能發(fā)現(xiàn)的執(zhí)行流程。 說(shuō)明:Laravel學(xué)習(xí)筆記之bootstrap源碼解析中聊異常處理時(shí)提到過(guò)Sentry這個(gè)神器,并打算以后聊聊這款神器,本文主要就介紹這款Errors Tracking神器Sentry,Sentry官網(wǎng)有一句話個(gè)人覺得帥呆了: Stop ...

    xiguadada 評(píng)論0 收藏0
  • Laravel 5.5 升級(jí)到 5.5.42 后遇到的 Cookie 序列化問(wèn)題

    摘要:查閱官方文檔后得知,新版為了防止對(duì)象的序列化反序列化漏洞被利用,不再對(duì)值進(jìn)行自動(dòng)的序列化和反序列化處理。舉個(gè)栗子更新到后,因?yàn)椴辉僮詣?dòng)對(duì)值進(jìn)行序列化處理,而只能加密字符串?dāng)?shù)據(jù),這個(gè)時(shí)候程序就會(huì)拋出錯(cuò)誤。 最近手殘升級(jí)了項(xiàng)目里 Laravel 的小版本號(hào)(v5.5.39 => v5.5.45),這不升級(jí)則已,一升級(jí)就出了問(wèn)題! Sentry 平臺(tái)上提示錯(cuò)誤:openssl_encrypt...

    jollywing 評(píng)論0 收藏0
  • 下載量最高的「50 」個(gè) Laravel 擴(kuò)展包

    摘要:簡(jiǎn)介另一個(gè)令人喜歡的地方,是擁有活躍的開發(fā)者社區(qū),而活躍的開發(fā)者社區(qū)帶來(lái)的,是繁華的擴(kuò)展包生態(tài)該項(xiàng)目統(tǒng)計(jì)了目前下載量最高的個(gè)擴(kuò)展包。記得喲相信下面這些擴(kuò)展包會(huì)讓你的編碼更加高效。排名下載量排名包地址下載次數(shù)描述圖片處理。 簡(jiǎn)介 Laravel 另一個(gè)令人喜歡的地方,是擁有活躍的開發(fā)者社區(qū),而活躍的開發(fā)者社區(qū)帶來(lái)的,是繁華的擴(kuò)展包生態(tài) ———— @Summer 該項(xiàng)目統(tǒng)計(jì)了目前 pack...

    liaorio 評(píng)論0 收藏0
  • 基于 lumen 的微服務(wù)架構(gòu)實(shí)踐

    摘要:現(xiàn)在的提供了一種更易于使用和維護(hù)的計(jì)劃任務(wù)方式。注意事項(xiàng)建議開啟這樣會(huì)極大的加速類的加載。 lumen 為速度而生的 Laravel 框架 官網(wǎng)的介紹很簡(jiǎn)潔,而且 lumen 確實(shí)也很簡(jiǎn)單,我在調(diào)研了 lumen 相關(guān)組件(比如緩存,隊(duì)列,校驗(yàn),路由,中間件和最重要的容器)之后認(rèn)為已經(jīng)能夠滿足我目前這個(gè)微服務(wù)的需求了。 任務(wù)目標(biāo) showImg(https://segmentfault...

    hatlonely 評(píng)論0 收藏0
  • Laravel核心解讀--異常處理

    摘要:請(qǐng)求未通過(guò)的驗(yàn)證時(shí)會(huì)拋出此異常。異常處理是非常重要但又容易讓開發(fā)者忽略的功能,這篇文章簡(jiǎn)單解釋了內(nèi)部異常處理的機(jī)制以及擴(kuò)展異常處理的方式方法。 異常處理是編程中十分重要但也最容易被人忽視的語(yǔ)言特性,它為開發(fā)者提供了處理程序運(yùn)行時(shí)錯(cuò)誤的機(jī)制,對(duì)于程序設(shè)計(jì)來(lái)說(shuō)正確的異常處理能夠防止泄露程序自身細(xì)節(jié)給用戶,給開發(fā)者提供完整的錯(cuò)誤回溯堆棧,同時(shí)也能提高程序的健壯性。 這篇文章我們來(lái)簡(jiǎn)單梳理一下...

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

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

0條評(píng)論

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