<?php
namespace App\Common\Util;
use DB;
class SqlLog
{
public function log()
{
\Illuminate\Support\Facades\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);
}
}
if ($tmp && $qBindings)
{
$tmp = vsprintf($tmp, $qBindings);
$tmp = str_replace("\", "", $tmp);
FileLog::getInstance('database_sql')->info(' execution time: ' . $query->time . 'ms; ' . $tmp . "\n\n\t");
}
});
}
}
在AppServiceProvider上添加:
public function boot()
{
app(SqlLog::class)->log();
}
实际效果
2019-10-27 11:21:06: 【sql_time = 1.14】 select * from `table` where `id` = 100