一、效果图
二、功能点:
1.当前请求的路由
2.当前请求的参数
3.当前一次请求运行的SQL,及SQL的运行时间。
上面三点包含我们在本地环境开发过程中必备的基本调式信息。
三、实现:
1.开发运行环境的配置
1.1打开.env文件 增加开关,建议开发环境设置为true,生产环境设置为false
APP_DEBUG=true
1.2设置LOG级别
APP_LOG_LEVEL=debug
1.3增加打印sql开关配置
打开config目录的任意配置文件,我这里将配置防到database.php中
'sql_debug' => env('APP_DEBUG'),
2.实现打印请求路由及参数
打开App\Http\Controllers\Controller.php文件
增加构造方法:
public function __construct(Request $request)
{
if (env('APP_DEBUG')) {
\Log::debug("\n\n");
\Log::debug('请求路由:' . $request->url());
$requestParameters = $request->all();
if (!empty($requestParameters)) {
\Log::debug('请求参数:' . var_export($requestParameters, true));
} else {
\Log::debug('请求参数:无');
}
}
}
3.实现打印运行的SQL语句
打开App\Providers\AppServiceProvider;
boot方法中增加DB监听
public function boot()
{
//sql调试
$sql_debug = config('database.sql_debug');//注意这里获取开关配置
if ($sql_debug) {
DB::listen(function ($sql) {
foreach ($sql->bindings as $i => $binding) {
if ($binding instanceof \DateTime) {
$sql->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
} else {
if (is_string($binding)) {
$sql->bindings[$i] = "'$binding'";
}
}
}
$query = str_replace(array('%', '?'), array('%%', '%s'), $sql->sql);
$query = vsprintf($query, $sql->bindings);
\Log::debug('运行SQL:' . $query);
\Log::debug('运行耗时:' . $sql->time . ' ms');
});
}
}
四、验证并使用
终端下进到项目根目录,运行日志追踪命令
tail -f ./storage/logs/laravel.log
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。