Laravel Telescope入门教程(上)

Laravel Telescope入门教程(上)

            Laravel Telescope是Laravel的新应用型debug助手,由Mohamed Said和Taylor Otwell编写。它是开源的,在GitHub上免费,并将在下周发布。

  您将通过Composer将Telescope作为第三方依赖项引入您的应用程序。

  安装Telescope后,您将通过访问应用程序的/telescope路径来访问它。

  Telescope是做什么的?

  如果您曾经使用过Clockwork或Laravel Debugbar,认为它们是功能强大的单机UI。

  Telescope由一系列watchers组成,这些watchers“观察”进入应用程序的每个请求,无论是来自HTTP请求,来自命令行,来自调度程序还是来自队列。

  这些watchers捕获关于这些请求及相关数据的各种信息-例如数据库查询及其执行时间、缓存命中和未命中、事件触发、邮件发送等等。

  UI中有用于检查以下各项的选项卡,每个选项卡都反映一个“Watcher”:

  要求(Requests)

  命令(Commands)

  时间表(Schedule)

  工作(Jobs)

  例外(Exceptions)

  日志(Logs)

  转储(Dumps)

  查询(Queries)

  模型(Models)

  活动(Events)

  邮件(Mail)

  通知(Notifications)

  高速缓存(Cache)

  Redis

  Tab/Watchers

  让我们逐步浏览每个tab让我们检查的内容。每个tab都显示一个列表页面,然后允许您深入查看任何给定项目的详细信息页面。

  (HTTP)请求

Laravel Telescope入门教程(上)

  此tab允许您查看进入应用程序的所有HTTP请求。您将能够查看所有HTTP请求以及有关每个请求的各种有用信息。

  Laravel Telescope入门教程(上)

  Laravel Telescope入门教程(上)

  Laravel Telescope入门教程(上)

  每个请求页面还显示与其他watchers有关此请求的任何数据;例如:所有数据库查询以及它们花了多长时间;哪个用户已针对此请求进行身份验证等等。

  Laravel Telescope入门教程(上)

  命令

  Laravel Telescope入门教程(上)

  命令选项卡列出已运行的所有命令及其退出代码。进去后,您还可以查看所有参数、选项和相关项目。

  Laravel Telescope入门教程(上)

  时间表

  列出已运行的计划任务。在每个任务的详细信息页面上,查看他们的所有计划信息,例如他们的cron计划(例如*****)。

  Laravel Telescope入门教程(上)

  作业(Jobs)

  Laravel Telescope入门教程(上)

  “Jobs”选项卡列出已运行或全部正在运行的所有作业。它与Horizon类似,但Horizon仅限Redis。不仅仅是一个UI,它还与队列工作者的运行方式进行交互。另一方面,Telescope只是一个UI,但它也适用于所有队列驱动程序。

  Laravel Telescope入门教程(上)

  在作业列表页面上,您能看到作业名称、运行的队列和连接、状态以及发生时间。

  在作业详情页面上,您将能够看到所有这些数据以及:主机名、作业的完全限定类名、连接、队列、尝试次数、超时、标签。

  Laravel Telescope入门教程(上)

  如果有用户附加,则使用附加的Eloquent模型(例如App\Video:1)自动标记作业。

  标签(Tags)

  诸如请求、命令等项目将由Telescope自动分配标签(例如,如果它是用户的请求,它将自动分配标签Auth:1;您可以单击该标签,它将仅过滤他们的标记项,等等)

  就像HTTP请求一样,您可以看到与此作业相关的各种信息,例如它触发的数据库查询,此作业启动的作业以及它生成的任何日志。

  如果您启动闭包(closure)而不是看到App\Jobs\RenderVideo,您会看到Closure(web.php:43)显示它的定义位置。

  新队列的闭包。

  Taylor为一个新库做出了贡献,带回了队列的闭包,Laravel曾经拥有这些闭包,但不久前就抛弃了。使用这些贡献和这个新库,如果你用模型将它导入到闭包中,它将存储模型ID,而不是整个模型,这要好得多(以及已经有的队列类)。所以,队列闭包又回来了!

  dispatch(function()use($video){

  //do stuff in a queued job

  });

  这次将用哈希序列化闭包;这是因为有了排队闭包,有人可以事先修改你的队列事件,以便通过它注入任意PHP,这是不好的!现在它哈希序列化了,并再次检查你的代码。

  Closure被序列化为一个长字符串,其中包含整个代码及其散列(使用类似于签名URL的代码)。

  例外情况

  Laravel Telescope入门教程(上)

  记录所有异常并允许您检查每个异常。这将向您显示与其他选项卡类似的数据,如主机名、类型、请求、标签、经过身份验证的用户。

  Laravel Telescope入门教程(上)

  但是你也会看到代码中的位置,突出显示,上面和下面有几行代码;而且你也会获得完整的堆栈跟踪。

  Laravel Telescope入门教程(上)

![](http://i2.51cto.com/images/blog/201811/09/6025f85231af87db77c3ad5138697965.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

  您还可以从引发它的请求中获取指向异常详细信息页面的链接。

  注意:在许多选项卡中,如果您在单个页面上(例如,给定例外的页面),您将获得指向生成该页面的请求页面的链接。

  如果多次发生相同的异常,它们将在列表页面上进行分组,但您仍然可以深入查看异常显示页面中的各个异常。

  日志

  “日志”选项卡显示基本日志消息、级别以及所有日志项的发生时间。

  Laravel Telescope入门教程(上)

  当您访问该个人详细信息页面时,在日志项中,您可以看到更多信息,包括传递给日志项的任何上下文数据(作为数组)。

  “比挖掘原始文本文件更好”。

  如果您使用数组将上下文传递给日志项,可以查看所有数据,查看触发它的请求,哪个用户触发了它。“比挖掘原始文本文件好一点。”

![](http://i2.51cto.com/images/blog/201811/09/6e283e844e3ea66073a10c96beaaaf88.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

本文转载自数据星河:www.bdgstore.com.cn

猜你喜欢

转载自blog.51cto.com/13957185/2315186