- 创建文件app/middleware/SqlLogger.php
<?php
namespace app\middleware;
use think\facade\Db;
use think\facade\Session;
class SqlLogger
{
public function handle($request, \Closure $next)
{
Db::listen(function($sql, $time) {
if (preg_match('/^(INSERT|UPDATE|DELETE|REPLACE)/i', $sql)) {
$log = [
'user_id' => Session::get('userid', 'guest'),
'sql' => $sql,
'time' => date('Y-m-d H:i:s'),
'ip' => '127.1.1.1'
];
file_put_contents("D:/phpstudy_pro/WWW/sql.log", json_encode($log)."\n", FILE_APPEND);
}
});
return $next($request);
}
}
?>
- 打开app/middleware.php文件并注册该中间件
<?php
return [
\think\middleware\SessionInit::class,
\think\middleware\AllowCrossDomain::class,
\app\middleware\SqlLogger::class
];
- 最终效果:执行修改sql后,会自动触发该方法