Laravel打印SQL日志

  1. 打开app\Providers\AppServiceProvider.PHP,在boot方法中添加如下内容
  2. 或者在任何位置加入这个函数
/**
     * 记录sql日志
     * @return [type]
     */
    private function listenAndOutputSql() {
        \DB::enableQueryLog();
        \DB::listen(function($sql) {
            // $sql is an object with the properties:
            //  sql: The query
            //  bindings: the sql query variables
            //  time: The execution time for the query
            //  connectionName: The name of the connection

            // To save the executed queries to file:
            // Process the sql and the bindings:
            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);

            // 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);
            */

            echo vsprintf($query, $sql->bindings);
        });
    }