ThinkPHP5.1中怎么实现增删改查操作日志记录

一、ThinkPHP 5.1的日志记录功能简介

在ThinkPHP 5.1中,日志记录功能已经内置。我们可以在应用程序中利用它来记录不同类型的事件,诸如错误消息、调试信息和用户操作等。四个级别的日志记录由框架提供,分别为:DEBUG、INFO、NOTICE和ERROR。

除了内置的日志级别外,我们还可以定义自己的日志级别。我们可以举例说明,创建一个名为“CRUD”的日志级别,以记录增删改查操作。

在默认情况下,日志将记录到应用程序根目录下的log目录中。如果需要更改日志存储位置,可以通过修改配置文件来实现。配置文件一般位于应用程序的config目录中。

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

二、增删改查操作日志记录实现

我们来看看如何在ThinkPHP 5.1中实现增删改查操作的日志记录。我们将按照以下步骤实现:

在config目录中创建自定义配置文件

为数据表添加日志字段

在Model中重写增删改方法

记录日志

在config目录中创建自定义配置文件

我们需要先创建一个自定义配置文件,放在应用程序的config目录下。我们把这个文件命名为common_extra.php。

$config = [

'crud_log' => true, // 记录增删改查日志'crud_ignore_fields' => ['create_time', 'update_time'] // 忽略日志记录的字段

];

在配置中,我们设置了两个选项。第一个是crud_log,用于开启或关闭日志记录。第二个是crud_ignore_fields,用于指定不记录日志的字段。

为数据表添加日志字段

接下来,我们需要为数据表添加一些字段来记录增删改查操作。我们可以为每个数据表添加以下字段:

火龙果写作 火龙果写作

用火龙果,轻松写作,通过校对、改写、扩展等功能实现高质量内容生产。

火龙果写作 106 查看详情 火龙果写作

id(自增主键)

user_id(操作用户id,可为空)

action(操作类型,如增加、删除、修改)

table_name(操作的数据表名)

data(操作的数据)

created_at(操作时间)

在Model中重写增删改方法

现在我们需要在Model中重写增删改方法,以实现日志记录。我们将使用全局查询作用域来实现它。我们将重写create、update和delete方法。

在每个方法中,我们将记录相应的操作类型和数据。然后,我们将通过使用日志类将日志写入日志文件。

以下是一些示例代码:

namespace appcommonmodel;

use thinkModel;

class User extends Model
{

protected $table = 'users';// 添加全局查询范围protected static function init(){    // 添加操作记录    static::beforeInsert(function ($item) {        if (config('common_extra.crud_log')) {            $item->user_id = session('user_id');            $item->action = 'add';            $item->table_name = $this->table;            $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE);            $item->created_at = date('Y-m-d H:i:s', time());            Db::table('log')->insert($item->toArray());        }    });    // 修改操作记录    static::beforeUpdate(function ($item) {        if (config('common_extra.crud_log')) {            $item->user_id = session('user_id');            $item->action = 'update';            $item->table_name = $this->table;            $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE);            $item->created_at = date('Y-m-d H:i:s', time());            Db::table('log')->insert($item->toArray());        }    });    // 删除操作记录    static::beforeDelete(function ($item) {        if (config('common_extra.crud_log')) {            $item->user_id = session('user_id');            $item->action = 'delete';            $item->table_name = $this->table;            $item->data = json_encode($item->toArray(), JSON_UNESCAPED_UNICODE);            $item->created_at = date('Y-m-d H:i:s', time());            Db::table('log')->insert($item->toArray());        }    });}

}

记录日志

最后,我们将记录日志。在前面的示例中,我们将日志写入名为“log”的数据表中。但是,您可以根据需要将日志写入文件,发送给日志服务器或将其发送到其他地方。

通过以上步骤,我们成功实现了在ThinkPHP 5.1中对增删改查操作进行日志记录的功能。

以上就是ThinkPHP5.1中怎么实现增删改查操作日志记录的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/599068.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月10日 19:34:19
下一篇 2025年11月10日 19:38:37

相关推荐

发表回复

登录后才能评论
关注微信