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

  • 相关阅读:
    ACM第六周竞赛题目——A LightOJ 1317
    数学概念——J
    数学概念——I
    数学概念——D 期望
    数学概念——A 几何概型
    数学概念——E 期望(经典问题)
    数学概念——F 概率(经典问题)birthday paradox
    数学概念——H 最美素数
    数学概念——G 最大公约数
    UVa1328
  • 原文地址:https://www.cnblogs.com/starfish29/p/13563657.html
Copyright © 2011-2022 走看看