![最终产品图片](https://i-blog.csdnimg.cn/blog_migrate/3dffd89efee48ab05267badf4696b2c5.png)
本教程是 Envato Tuts +上的“ 使用PHP构建启动”系列 的一部分。 在本系列文章中,我 将以 我的 Meeting Planner 应用程序作为真实示例 ,指导您完成从概念到现实的启动 。 在此过程的每一步中,我都会将Meeting Planner代码作为开放源代码示例发布,您可以从中学习。 我还将解决与启动相关的业务问题。
错误记录简介
一旦Meeting Planner进入alpha版本,人们开始积极使用它来安排会议,将发生用户很少报告的错误。 但是,在与人通电话时,他们通常会告诉我他们遇到的问题。
在今天的教程中,我将向您介绍如何尝试两种不同的基于云的日志记录服务,即Rollbar和Sentry ,以及为什么我最终暂时选择使用Sentry。
如果您尚未尝试使用会议计划器,请继续并安排您的第一次会议 。 我确实参与了下面的评论主题,所以请告诉我您的想法! 您也可以通过Twitter @reifman与我联系 。 如果您想为以后的教程提出新功能或主题,我特别感兴趣。
提醒一下,Meeting Planner的所有代码都是在PHP的Yii2框架中编写的。 如果您想了解有关Yii2的更多信息,请查看我们的平行系列“ 使用Yii2编程” 。
让我们开始。
我对Rollbar的体验
![建筑启动记录-Rollbar主页](https://i-blog.csdnimg.cn/blog_migrate/0f8e0d480505f30081929c0e81793445.png)
Yii Framework背后的主要志愿者开发人员之一Alex Makarov向我推荐了Rollbar和Sentry 。 在构建Meeting Planner并撰写该框架的好处时,Alex对我扩展关于Yii2的专业知识非常有帮助。
最初,我考虑过创建辅助数据库连接来记录我的错误并手动跟踪它们。 但是后来,我注意到这些服务提供了许多高级报告功能。 例如,他们计算相同错误的数量并按严重性报告它们。 在某个时候,我将为Yii编程系列编写一个更通用的Yii2错误日志记录教程,但就目前而言,我还是很投入。
而且,在我掌握基本知识的同时,为Rollbar使用了一些开源Yii2插件(有几个)。 我开始遇到实际上是由插件引起的生产错误。
![建立启动日志-Rolbar集成您的PHP应用程序](https://i-blog.csdnimg.cn/blog_migrate/fce7a09f6a66f30c2e10b0f5aa37f053.png)
总体而言,Rollbar的Web用户界面和服务给我留下了深刻的印象。 但是我相信我的配置和开源Yii扩展存在一些问题,导致了新问题。
![建筑启动记录-Rollbar错误列表](https://i-blog.csdnimg.cn/blog_migrate/c6b11e585b57c667412757815e67190b.png)
换句话说,由于我尝试记录其他错误,人们看到了生产错误。 这使人们对会议策划者的印象恶化。 甚至我也遇到了新出现的神秘生产错误,这既混乱又浪费我的时间。
为了优化他们的经验和时间,我暂时禁用了错误处理,并决定尝试使用Sentry。
需要明确的是,我认为使用更好的Rollbar Yii2扩展和更仔细的配置(此类第三方插件从来没有很好地证明这一点),该服务将运行良好。 我不想阻止您尝试。
Sentry入门
Sentry是一种可比较的日志记录服务,尽管价格比Rollbar便宜。 较低的成本通常对初创企业很有帮助。
![建筑启动记录-Sentry主页](https://i-blog.csdnimg.cn/blog_migrate/68a8aab7f868b491c87871acb24458a0.png)
您会发现他们的第一个价格涨幅仅为每月$ 29 :
![建筑启动记录-Sentry定价页面](https://i-blog.csdnimg.cn/blog_migrate/fd5103e1a041724c5579aedbc04c7e04.png)
报名
我继续并使用“注册”表单开始使用:
![建筑启动记录-Sentry注册表格](https://i-blog.csdnimg.cn/blog_migrate/071ffe6d279cf7671bd2e2d5c396ab98.png)
创建一个新项目
在Sentry中,我为Meeting Planner 创建了一个新项目来跟踪此域中的错误:
![建立启动记录-Sentry创建一个新的项目表单](https://i-blog.csdnimg.cn/blog_migrate/3d2145a07f3c477412eb807413461766.png)
然后,Sentry为您提供了多种语言和框架的指南(尚未包含Yii,向Sentry团队提示!):
![建立启动日志-Sentry配置您的应用程序指南](https://i-blog.csdnimg.cn/blog_migrate/db9d7f877d34f36b6ea92b2124843949.png)
配置Yii2 Sentry插件
对于会议计划者 ,我选择使用Notamedia Yii2 Sentry扩展 。 我遇到了几个小问题,使我放慢了脚步。
第一个问题-不是插件的错误
首先,我很难找到我的站点的唯一授权码以向Sentry标识自己。 通常,Web服务使这些查找变得非常容易,但是我花了大约10到15分钟的时间才能找到它们。
在“ 设置”页面的左侧菜单底部附近,有一个“ 客户端密钥”(DSN)选项可显示它们:
![建立启动日志-Sentry客户端密钥DSN](https://i-blog.csdnimg.cn/blog_migrate/c2966365983d33ef08ad4fe390b8129a.png)
我将密钥分为三个部分,并将它们放入会议计划程序所有密钥的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电子邮件](https://i-blog.csdnimg.cn/blog_migrate/bbf0a16687df401f52fdf816e10e118a.png)
与会议计划者一起测试哨兵
在本地环境中的一个控制器上,我刚刚将代码添加到actionIndex
,该代码将在我在网站上加载页面时加载:
\Yii::warning have a problem Portland.');
漏洞报告很快就从本地和生产环境中引入。 它们降落在Sentry仪表板中。
哨兵仪表板
![建筑启动记录-Sentry仪表板](https://i-blog.csdnimg.cn/blog_migrate/aeb4257c6cda067d1485997fbefe64b8.png)
这是报告我的一个虚假测试错误的示例,“ 我们有一个波特兰问题。 ”它显示了Sentry为您收集的所有有用数据,使发现,识别和调试生产错误更加容易:
![建立启动记录-Sentry中的错误报告示例我们遇到了波特兰问题](https://i-blog.csdnimg.cn/blog_migrate/d8a8a604785cf16209bb4167f1a8168f.png)
在上方,您可以看到与URL和用户浏览器相关的标签。 下面的报告继续向您显示导致错误的代码行:
![建立启动记录-样本错误的第二部分](https://i-blog.csdnimg.cn/blog_migrate/4ad14e092b84a5daa6f030c3c3537549.png)
它还在上方显示cookie,在下方显示标题和用户ID:
![建立启动记录-示例错误的第三部分](https://i-blog.csdnimg.cn/blog_migrate/e8314c31dbd5eb4f38a70a3f032c5272.png)
都非常有帮助。
Sentry电子邮件警报到新错误
默认情况下,Sentry还会通过电子邮件将错误发送给您(以便您立即了解它们):
![建立启动错误记录-Sentry电子邮件错误报告](https://i-blog.csdnimg.cn/blog_migrate/121e8a31e6405815b503f8cb5517d2bd.png)
实际上,很快,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