• laravel & yii2 开启mysql 日志 方法


    laravel 和yii2 都是基于模型查询数据库,开发调试过程中往往需要知道当前执行了哪些sql语句,以便查找问题和调试

    1、laravel 开启mysql日志

    打开 app/Providers/AppServiceProvider.php 

    在boot方法增加监听

    public function boot()
    {
        if ($this->app->environment() === "local") {//判断是local环境才开启,以免影响生成的性能
            \DB::listen(function ($query) {
                $tmp = str_replace('?', '"'.'%s'.'"', $query->sql);
                $qBindings = [];
                foreach ($query->bindings as $key => $value) {
                    if (is_numeric($key)) {
                        $qBindings[] = $value;
                    } else {
                        $tmp = str_replace(':'.$key, '"'.$value.'"', $tmp);
                    }
                }
                $tmp = vsprintf($tmp, $qBindings);
                $tmp = str_replace("\\", "", $tmp);
                \Log::info(' execution time: '.$query->time.'ms; '.$tmp."\n\n\t");
    
            });
     
        }
    }

    然后storage/logs查看日志

    2、yii2开启mysql 日志

    在config/web.php找到 组件components 配置

    在log组件配置增加

                'targets' => [
                    [
                        'class' => 'yii\log\FileTarget',
    
                        'levels' => ['error', 'warning'],
    
                        'logVars'=>[],                    //表示以yii\db\或者app\models\开头的分类都会写入这个文件
    
                        'categories'=>['yii\db\*','app\models\*'],                    //表示写入到文件
    
                        'logFile'=>'@runtime/../runtime/logs/sql_'.date('y_m_d').'.log',
                    ],

     

    然后可以在runtime/logs/ 找到mysql日志

  • 相关阅读:
    Highcharts之饼图
    设计模式学习之原型模式
    jQuery学习之结构解析
    JS学习之闭包的理解
    JS学习之prototype属性
    JS学习之事件冒泡
    Mybatis学习之JDBC缺陷
    Spring学习之Aop的基本概念
    Struts学习之值栈的理解
    Struts学习之自定义结果集
  • 原文地址:https://www.cnblogs.com/jinshao/p/16259201.html
Copyright © 2020-2023  润新知