我是一名新的Laarvel用户。在我使用Codeigniter之前。在Codeigniter中,通过执行tail -f很容易看到日志文件和执行时间。我看到Laravel在app / storage / logs目录中有日志文件。问题是日志文件只给我错误,它没有给出任何执行时间或查询时间。有人可以帮助我如何从命令行查看执行时间?我也尝试过Ioic-sharma探测器。
答案 0 :(得分:12)
默认情况下,由于Laravel的默认记录器设置不支持此功能,因此Laravel甚至不会将执行时间记录到日志中。
您必须自己构建它或找到一个为您执行此操作的库。有几个分析器库,但大多数是通过在页面底部显示一个分析器栏来实现的。
这是我以前用过的一个不错的项目:https://github.com/barryvdh/laravel-debugbar
如果您确实要记录每个请求的执行时间,我已经采用了粗略的方法,将其添加到您的global.php
文件中。
$timeStart = microtime(true);
App::finish(function() use ($timeStart) {
$diff = microtime(true) - $timeStart;
$sec = intval($diff);
$micro = $diff - $sec;
Log::debug(Request::getMethod() . "[" . Request::url() . "] Time: " . round($micro * 1000, 4) . " ms");
});
这很可能会放在一个更好的地方,或者至少早点启动计时器,但这是一个快速的例子。
答案 1 :(得分:0)
为了直接设置记录,Laravel 4.1默认记录所有查询(不确定是否包含4.1中的执行时间)。为了查看当前请求的查询日志,您只需获取查询日志并将其添加到Laravel日志中,如下所示:
$queries = \DB::getQueryLog(); // Get query log for this request
\Log::info($queries); // Add it to the laravel log
5.0中唯一的区别是Laravel默认不再记录查询(但肯定包括执行时间),因此您需要将以下内容添加到要分析的脚本的开头:
\DB::connection()->enableQueryLog();
注意:如果您是从根命名空间工作,或者如果您使用"则不需要使用反斜杠。这些函数来自根命名空间。
以下是我在日志中的样子:
array (
0 =>
array (
'query' => 'select * from `users` where `users`.`deleted_at` is null limit 10 offset 0',
'bindings' =>
array (
),
'time' => 0.4899999999999999911182158029987476766109466552734375,
),
)
如果你想从命令行看到它,只需执行var_dump($ queries)而不是将它们发送到你的日志。