建立您的启动:错误记录

最终产品图片
您将要创造的

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

错误记录简介

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

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

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

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

让我们开始。

我对Rollbar的体验

建筑启动记录-Rollbar主页

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

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

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

建立启动日志-Rolbar集成您的PHP应用程序

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

建筑启动记录-Rollbar错误列表

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

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

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

Sentry入门

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

建筑启动记录-Sentry主页

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

建筑启动记录-Sentry定价页面

报名

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

建筑启动记录-Sentry注册表格

创建一个新项目

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

建立启动记录-Sentry创建一个新的项目表单

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

建立启动日志-Sentry配置您的应用程序指南

配置Yii2 Sentry插件

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

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

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

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

建立启动日志-Sentry客户端密钥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确实向您发送了一封介绍性电子邮件,但直到后来我才注意到。 尽管如此,它还是很有帮助的:

建立启动记录-欢迎使用Sentry电子邮件

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

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

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

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

哨兵仪表板

建筑启动记录-Sentry仪表板

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

建立启动记录-Sentry中的错误报告示例我们遇到了波特兰问题

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

建立启动记录-样本错误的第二部分

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

建立启动记录-示例错误的第三部分

都非常有帮助。

Sentry电子邮件警报到新错误

默认情况下,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值