欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

建立您的启动:错误记录

程序员文章站 2022-04-20 21:54:14
...
建立您的启动:错误记录
您将要创造的

本教程是 Envato Tuts +上的“ 使用PHP构建启动”系列 的一部分。 在本系列文章中,我 将以 我的 Meeting Planner 应用程序作为真实示例 ,指导您完成从概念到现实的启动 在此过程的每一步中,我都会将Meeting Planner代码作为开放源代码示例发布,您可以从中学习。 我还将解决与启动相关的业务问题。

错误记录简介

一旦Meeting Planner进入alpha版本,人们开始积极使用它来安排会议,将发生用户很少报告的错误。 但是,在与人通电话时,他们通常会告诉我他们遇到的问题。

在今天的教程中,我将向您介绍如何尝试两种不同的基于云的日志记录服务,即RollbarSentry ,以及为什么我最终暂时选择使用Sentry。

如果您尚未尝试使用会议计划器,请继续并安排您的第一次会议 我确实参与了下面的评论主题,所以请告诉我您的想法! 您也可以通过Twitter @reifman与联系 如果您想为以后的教程提出新功能或主题,我特别感兴趣。

提醒一下,Meeting Planner的所有代码都是在PHP的Yii2框架中编写的。 如果您想了解有关Yii2的更多信息,请查看我们的平行系列“ 使用Yii2编程”

让我们开始。

我对Rollbar的体验

建立您的启动:错误记录

Yii Framework背后的主要志愿者开发人员之一Alex Makarov向我推荐了RollbarSentry 在构建Meeting Planner并撰写该框架的好处时,Alex对我扩展关于Yii2的专业知识非常有帮助。

最初,我考虑过创建辅助数据库连接来记录我的错误并手动跟踪它们。 但是后来,我注意到这些服务提供了许多高级报告功能。 例如,他们计算相同错误的数量并按严重性报告它们。 在某个时候,我将为Yii编程系列编写一个更通用的Yii2错误日志记录教程,但就目前而言,我还是很投入。

而且,在我掌握基本知识的同时,为Rollbar使用了一些开源Yii2插件(有几个)。 我开始遇到实际上是由插件引起的生产错误。

建立您的启动:错误记录

总体而言,Rollbar的Web用户界面和服务给我留下了深刻的印象。 但是我相信我的配置和开源Yii扩展存在一些问题,导致了新问题。

建立您的启动:错误记录

换句话说,由于我尝试记录其他错误,人们看到了生产错误。 这使人们对会议策划者的印象恶化。 甚至我也遇到了新出现的神秘生产错误,这既混乱又浪费我的时间。

为了优化他们的经验和时间,我暂时禁用了错误处理,并决定尝试使用Sentry。

需要明确的是,我认为使用更好的Rollbar Yii2扩展和更仔细的配置(此类第三方插件从来没有很好地证明这一点),该服务将运行良好。 我不想阻止您尝试。

Sentry入门

Sentry是一种可比较的日志记录服务,尽管价格比Rollbar便宜。 较低的成本通常对初创企业很有帮助。

建立您的启动:错误记录

您会发现他们的第一个价格涨幅仅为每月$ 29

建立您的启动:错误记录

报名

我继续并使用“注册”表单开始使用:

建立您的启动:错误记录

创建一个新项目

在Sentry中,我为Meeting Planner 创建了一个新项目来跟踪此域中的错误:

建立您的启动:错误记录

然后,Sentry为您提供了多种语言和框架的指南(尚未包含Yii,向Sentry团队提示!):

建立您的启动:错误记录

配置Yii2 Sentry插件

对于会议计划者 ,我选择使用Notamedia Yii2 Sentry扩展 我遇到了几个小问题,使我放慢了脚步。

第一个问题-不是插件的错误

首先,我很难找到我的站点的唯一授权码以向Sentry标识自己。 通常,Web服务使这些查找变得非常容易,但是我花了大约10到15分钟的时间才能找到它们。

在“ 设置”页面的左侧菜单底部附近,有一个“ 客户端**”(DSN)选项可显示它们:

建立您的启动:错误记录

我将**分为三个部分,并将它们放入会议计划程序所有**的mp.ini文件中:

#rollbar_key = "bxxxxxxxxxxxxxxxxxxxxxxxxxxxxf"
sentry_key_public = "bxxxyyyyxxxzzzzyyyyccccc"
sentry_key_private = "8b3333xxxyyyyxxxzzzzyyyyccccc4446"
sentry_id ="9922"

在/frontend/config/main.php中,我更新了插件的建议设置,以使用mp.ini中的特定变量。 它们从$ config开始:

'log' => [
    'traceLevel' => YII_DEBUG ? 3 : 0,
    'targets' => [
        [
            'class' => 'notamedia\sentry\SentryTarget',
            'dsn' => 'http://'.$config['sentry_key_public'].
                ':'.$config['sentry_key_private'].
                '@sentry.io/'.$config['sentry_id'],
            'levels' => ['error', 'warning'],
            'context' => true, // Write the context information. The default is true.
        ],
      ],

第二个问题

然后,我无法让Sentry捕获错误报告。 事实证明,notamedia插件的文档使用URL sentry.com而不是sentry.io 幸运的是,我在短短几分钟内就发现了这一点,并且没有浪费太多时间。

哨兵介绍性电子邮件

Sentry确实向您发送了一封介绍性电子邮件,但直到后来我才注意到。 尽管如此,它还是很有帮助的:

建立您的启动:错误记录

与会议计划者一起测试哨兵

在本地环境中的一个控制器上,我刚刚将代码添加到actionIndex ,该代码将在我在网站上加载页面时加载:

\Yii::warning have a problem Portland.');

漏洞报告很快就从本地和生产环境中引入。 它们降落在Sentry仪表板中。

哨兵仪表板

建立您的启动:错误记录

这是报告我的一个虚假测试错误的示例,“ 我们有一个波特兰问题。 ”它显示了Sentry为您收集的所有有用数据,使发现,识别和调试生产错误更加容易:

建立您的启动:错误记录

在上方,您可以看到与URL和用户浏览器相关的标签。 下面的报告继续向您显示导致错误的代码行:

建立您的启动:错误记录

它还在上方显示cookie,在下方显示标题和用户ID:

建立您的启动:错误记录

都非常有帮助。

Sentry电子邮件警报到新错误

默认情况下,Sentry还会通过电子邮件将错误发​​送给您(以便您立即了解它们):

建立您的启动:错误记录

实际上,很快,Sentry就向我展示了WordPress黑客机器人已经在我的网站上对wp-login和wp-admin进行ping操作。 即使它们在这里不存在,我也希望将其影响最小化。 因此,我在前端SiteController.php中添加了一个梦幻岛操作,以结束应用程序的执行。

public function actionNeverland()
    {
      // for abusive scripts like wp-login probes
      Yii::$app->end();
    }

Sentry还发现我的后台任务中的缓存发生了权限问题。 这也很有帮助。

目前,我已经在Sentry上出售了产品,并且我希望它能在正在进行的预览版发布中投入生产,并从中快速受益。

下一步是什么?

希望您喜欢有关生产错误处理和日志记录的学习。

在“ 使用PHP构建您的启动”系列中观看即将发布的教程。 今年我做了很多功能开发和完善。 现在,该让人们使用Meeting Planner了。 很快,我将为预览版撰写促销计划-这是启动您的创业公司的另一个关键要素。

如果您还没有,请尝试安排时间并与您的朋友共享会议计划器。 与往常一样,如果您在下面的评论中分享您的经验,我将不胜感激,并且我一直对您的建议感兴趣。 您随时可以直接通过Twitter @reifman与联系

基于SEC新的众筹规则的实施,我也越来越接近与WeFunder展开实验。 您可以根据需要在此处关注我们的个人资料 我还将在以后的教程中写更多有关此的内容。

相关链接

翻译自: https://code.tutsplus.com/tutorials/building-your-startup-error-logging--cms-27349