zoukankan      html  css  js  c++  java
  • Laravel打印sql日志

    直接打印

    use Log;
    use DB;
    DB::connection()->enableQueryLog();
    Log::info(DB::getQueryLog());
    //print_r($orm->toSql());print_r($orm->getBindings());exit;
    DB::connection()->enableQueryLog();
    Log::info(DB::getQueryLog());

    监听

    若要打印完整的SQL语句日志可在 app/providers/AppServicesProviders.php 文件的 boot 方法编写如下代码

    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'";
                    }
                }
            }
     
            // Insert bindings into query
            $query = str_replace(array('%', '?'), array('%%', '%s'), $sql->sql);
     
            $query = vsprintf($query, $sql->bindings);
     
            // Save the query to file
            $logFile = fopen(
                storage_path('logs' . DIRECTORY_SEPARATOR . date('Y-m-d') . '_query.log'),
                'a+'
            );
            fwrite($logFile, date('Y-m-d H:i:s') . ': ' . $query . PHP_EOL);
            fclose($logFile);
        });

    或者

    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."
    
    	");
    });

    转载至:https://www.jianshu.com/p/bb6fdbf5445e

  • 相关阅读:
    获取系统信息
    Spring下获取项目根路径--good
    Java 获取webapp,Root,classpath,项目等路径工具类
    并发与并行的区别
    享元模式的简单使用
    mysql 分库分表(水平切割和垂直切割)
    sql随机筛选几条记录
    创建表
    sql字段组合唯一
    Jobject 使用
  • 原文地址:https://www.cnblogs.com/starfish29/p/13563657.html
Copyright © 2011-2022 走看看