千家信息网

Laravel/Lumen调试利器

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,一、效果图二、功能点:1.当前请求的路由2.当前请求的参数3.当前一次请求运行的SQL,及SQL的运行时间。上面三点包含我们在本地环境开发过程中必备的基本调式信息。三、实现:1.开发运行环境的配置1.
千家信息网最后更新 2025年02月05日Laravel/Lumen调试利器

一、效果图


二、功能点:
1.当前请求的路由
2.当前请求的参数
3.当前一次请求运行的SQL,及SQL的运行时间。

上面三点包含我们在本地环境开发过程中必备的基本调式信息。


三、实现:
1.开发运行环境的配置

1.1打开.env文件 增加开关,建议开发环境设置为true,生产环境设置为falseAPP_DEBUG=true1.2设置LOG级别APP_LOG_LEVEL=debug1.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


0