Laravel打印程序运行日志

1,652 阅读1分钟
<?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.14select * from `table` where `id` = 100