PHP增删改查怎么记录操作日志_php日志记录代码【实现】

admin 百科 14
PHP增删改查操作日志记录有五种方法:一、PDO预处理封装日志写入;二、MySQL触发器同步写入日志表;三、中间件或基类统一拦截;四、Monolog库结构化日志输出;五、SQL注释嵌入客户端标识。

PHP增删改查怎么记录操作日志_php日志记录代码【实现】-第1张图片-佛山资讯网

当在PHP应用中执行增删改查操作时,记录每次数据库操作的详细信息有助于追踪数据变更、排查问题和满足审计要求。以下是实现PHP增删改查操作日志记录的具体方法:

一、使用PDO预处理语句封装日志写入

该方法在执行SQL前统一捕获操作类型、SQL语句、参数及执行结果,并将日志写入文件或数据库。所有数据库操作通过同一入口函数调用,便于集中控制日志逻辑。

1、定义日志记录函数logDatabaseOperation(),接收操作类型(INSERT/UPDATE/DELETE/SELECT)、原始SQL、绑定参数数组、执行耗时和是否成功标志。

2、在函数内部拼接日志内容,格式为:[时间] [操作类型] [SQL摘要] [参数] [状态] [耗时ms]。

立即学习“PHP免费学习笔记(深入)”;

3、使用file_put_contents()以FILE_APPEND模式写入日志文件,例如"log/db_operation_".date('Y-m-d').".log"。

4、在PDO执行前调用logDatabaseOperation()记录待执行信息,在execute()后再次调用并传入实际执行结果与耗时。

二、基于MySQL触发器同步写入日志表

该方法不依赖PHP代码逻辑,直接在数据库层捕获DML变更,确保即使绕过PHP接口的直接SQL操作也能被记录,提升日志完整性与可靠性。

1、创建日志表operation_log,包含字段:id、table_name、operation_type(ENUM('INSERT','UPDATE','DELETE'))、old_data(JSON)、new_data(JSON)、operator_ip(VARCHAR)、created_at。

2、为需监控的数据表(如user、order)分别创建AFTER INSERT、AFTER UPDATE、AFTER DELETE触发器。

3、在INSERT触发器中,将NEW.*写入new_data字段,并置old_data为NULL;在UPDATE触发器中,将OLD.*和NEW.*分别序列化为JSON存入old_data与new_data;在DELETE触发器中,将OLD.*写入old_data,new_data为NULL。

4、通过USER()或自定义会话变量获取当前操作用户,结合$_SERVER['REMOTE_ADDR'](需PHP层传入临时变量)补充operator_ip字段。

三、通过中间件或基类统一拦截DB操作

适用于使用自定义数据库访问类或ORM框架的项目,通过继承或装饰器方式将日志逻辑注入到query()、insert()、update()、delete()等公共方法中,避免重复编码。

1、定义抽象基类DatabaseManager,其所有CRUD方法均先调用recordLog()再执行实际SQL。

标签: mysql php js json composer seo 编码 app session stream

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~