资讯专栏INFORMATION COLUMN

制作一个BearyChat的Laravel项目错误日志通知机器人

gaosboy / 2980人阅读

摘要:修改在方法中添加如下代码就可以了日志机器人好了,在代码中故意写个错误,看看收到错误日志了。如果觉得本篇文章对您十分有益,何不打赏一下

本文最早发表于本人博客: 制作一个BearyChat的Laravel项目错误日志通知机器人

Laravel 集成 Monolog 来做日志处理,Monolog非常强大,也容易扩展,其实它本身已经支持很多Handler了,你可以把日志发送到邮件或者其他日志收集服务器或者系统中,因为我们团队使用Bearychat 作为团队沟通工具,所以把Laravel项目的实时错误日志推送到Bearychat的一个讨论组中,方便组员迅速发现异常和解决问题 ,其实很简单没多少行代码就搞定了。

首先创建BearyChatHandler

data["channel"] = $channel;
        $this->webhook = $webhook;
        parent::__construct($level, $bubble);
    }

    /**
     * {@inheritDoc}
     */
    protected function write(array $record)
    {
        $postData = [
            "text" => $record["datetime"]->format("Y-m-d H:i:s") . "-" . $record["level"] . "-" . $record["level_name"],
            "markdown" => false,
            "notification" => "Laravel Error Log",
            "attachments" => [
                [
                    "title" => current(preg_split("/([.

]+)/i", $record["message"])),
                    "text" => $record["message"],
                    "color" => "#ffa500"
                ]
            ]
        ];
        $postString = json_encode(array_merge($this->data, $postData));
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->webhook);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            "Content-Type: application/json"
        ));

        CurlUtil::execute($ch);
    }

}

只要继承AbstractProcessingHandler,重写write方法就可以了,write中向Bearychat的webhook地址POST数据就可以了,$recordMonolog记录日志的详情

创建一个BearyChat组用来接受通知

新建讨论组,比如叫"Laravel错误日志报告"

添加机器人到讨论组,点击Incoming添加一个比如叫"Laravel日志机器人",发送目标选择上一步建的"Laravel错误日志报告",这样就获取了webhook的URL地址了

把相应的人员加到这个讨论组

集成ChearyChatHandler

官方手册上讲到,你像这样完全控制Monolog

Custom Monolog Configuration

If you would like to have complete control over how Monolog is configured for your application, you may use the application"s configureMonologUsing method. You should place a call to this method in your bootstrap/app.php file right before the $app variable is returned by the file:

$app->configureMonologUsing(function($monolog) {
$monolog->pushHandler(...);
});

return $app;

但是我们除了发送到ChearyChat以外还要保留默认的记录到log文件的方式,所以我们不这样做,我们只要在 Exception Handler的地方添加一个我们的ChearyChatHandler就可以了。

修改app/Exceptions/Handler.php,在report方法中添加如下代码就可以了:

pushHandler(new BearyChatHandler("https://yourhookurl","Laravel日志机器人"));

        return parent::report($e);
    }
......
}

好了,在代码中故意写个错误,看看BearyChat收到错误日志了。

如果觉得本篇文章对您十分有益,何不 打赏一下

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21617.html

相关文章

  • [Laravel 5.3] Notification 个人理解,及 BearyChat Channe

    摘要:提供了一种全新的发送通知的方式。个人理解是可以基于某事件操作触发一系列的通知任务,而通知方式由通知渠道接管,这样使得通知或推送逻辑更抽象,更易于管理和重构。在之前,我是利用的来完成这一系列通知。使用的配置文件还是原来的,无需重新配置。 Laravel Notification Laravel 5.3 提供了一种全新的发送通知的方式:Notification 。个人理解是可以基于某事件(...

    Yang_River 评论0 收藏0
  • BearyChat 消息推送器人 For PHP & Laravel

    摘要:后台经常需要给管理员老板运营推送一些事件消息,比如有用户购买了报错服务器流量预警有新的评论收到新的意见反馈今日超过等等。 后台经常需要给管理员/老板/运营推送一些事件消息,比如有用户购买了VIP、PHP 报错、服务器流量预警、App Store 有新的评论、收到新的意见反馈、今日 DAU 超过 10W+ 等等。我之前是做了一个简单的 iOS 应用来接收 Push 消息,需要推送消息时就...

    王岩威 评论0 收藏0
  • 使用钉钉通知 Laravel 框架系统异常

    摘要:看了兄弟的倍洽通知异常我们团队主要用钉钉,就想找个的钉钉通知异常的包,最好是安装后开箱即用的。花了分钟写了一个钉钉通知异常的包食用方法安装发布配置文件配置记得配置你的效果如下仓库 看了Hanson兄弟的倍洽通知异常 我们团队主要用钉钉,就想找个Laravel的钉钉通知异常的包,最好是安装后开箱即用的。 在Google和GitHub上找了有3分钟还是没有找到能开箱即用的,于是自己动手丰...

    sumory 评论0 收藏0
  • 如何在一分钟内配置一个二维码器人

    摘要:先去你团队所在管理面板添加一个机器人。这个过程很费时间不说,偶尔还会弄错,现在有了这个二维码机器人,不止方便,地址也写在上边,大家可以即及时发现错误。 真的一分钟就可以完成一个二维码机器人? 我们团队在使用自己产品的时候,经常会有冒出一些很多小想法,比如: 在抽奖的时候能不能有个机器人帮助我们掷色子?在选择困难的时候有一个机器人帮我决定中午吃啥?我想把电脑上的一个页面用手机打开,能不能...

    wupengyu 评论0 收藏0

发表评论

0条评论

gaosboy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<