Laravel/Lumen调试利器

一、效果图

Laravel/Lumen调试利器

二、功能点:
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

原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/tech/opensource/195118.html

(0)
上一篇 2021年11月16日 10:29
下一篇 2021年11月16日 10:29

相关推荐

发表回复

登录后才能评论