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)请求
此tab允许您查看进入应用程序的所有HTTP请求。您将能够查看所有HTTP请求以及有关每个请求的各种有用信息。
每个请求页面还显示与其他watchers有关此请求的任何数据; 例如:所有数据库查询以及它们花了多长时间;哪个用户已针对此请求进行身份验证等等。
命令
命令选项卡列出已运行的所有命令及其退出代码。进去后,您还可以查看所有参数、选项和相关项目。
时间表
列出已运行的计划任务。在每个任务的详细信息页面上,查看他们的所有计划信息,例如他们的cron计划(例如* * * * *)。
作业(Jobs)
“Jobs”选项卡列出已运行或全部正在运行的所有作业。它与Horizon类似,但Horizon仅限Redis。不仅仅是一个UI,它还与队列工作者的运行方式进行交互。另一方面,Telescope只是一个UI,但它也适用于所有队列驱动程序。
在作业列表页面上,您能看到作业名称、运行的队列和连接、状态以及发生时间。
在作业详情页面上,您将能够看到所有这些数据以及:主机名、作业的完全限定类名、连接、队列、尝试次数、超时、标签。
如果有用户附加,则使用附加的Eloquent模型(例如App \ Video:1)自动标记作业。
标签(Tags)
诸如请求、命令等项目将由Telescope自动分配标签(例如,如果它是用户 的请求,它将自动分配标签Auth:1; 您可以单击该标签,它将仅过滤他们的标记项,等等)
就像HTTP请求一样,您可以看到与此作业相关的各种信息,例如它触发的数据库查询,此作业启动的作业以及它生成的任何日志。
如果您启动闭包(closure)而不是看到App \ Jobs \ RenderVideo,您会看到Closure(web.php:43)显示它的定义位置。
新队列的闭包。
Taylor为一个新库做出了贡献,带回了队列的闭包,Laravel曾经拥有这些闭包,但不久前就抛弃了。使用这些贡献和这个新库,如果你用模型将它导入到闭包中,它将存储模型ID,而不是整个模型,这要好得多(以及已经有的队列类)。所以,队列闭包又回来了!
这次将用哈希序列化闭包; 这是因为有了排队闭包,有人可以事先修改你的队列事件,以便通过它注入任意PHP,这是不好的!现在它哈希序列化了,并再次检查你的代码。
Closure被序列化为一个长字符串,其中包含整个代码及其散列(使用类似于签名URL的代码)。
例外情况
记录所有异常并允许您检查每个异常。这将向您显示与其他选项卡类似的数据,如主机名、类型、请求、标签、经过身份验证的用户。
但是你也会看到代码中的位置,突出显示,上面和下面有几行代码;而且你也会获得完整的堆栈跟踪。
您还可以从引发它的请求中获取指向异常详细信息页面的链接。
注意:在许多选项卡中,如果您在单个页面上(例如,给定例外的页面),您将获得指向生成该页面的请求页面的链接。
如果多次发生相同的异常,它们将在列表页面上进行分组,但您仍然可以深入查看异常显示页面中的各个异常。
日志
“日志”选项卡显示基本日志消息、级别以及所有日志项的发生时间。
当您访问该个人详细信息页面时,在日志项中,您可以看到更多信息,包括传递给日志项的任何上下文数据(作为数组)。
“比挖掘原始文本文件更好”。
如果您使用数组将上下文传递给日志项, 可以查看所有数据,查看触发它的请求,哪个用户触发了它。“比挖掘原始文本文件好一点。”