加入收藏 | 设为首页 | 会员中心 | 我要投稿 92站长网 (https://www.92zz.com.cn/)- 语音技术、视频终端、数据开发、人脸识别、智能机器人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2023-09-01 10:31:30 所属栏目:PHP教程 来源:网络
导读:   给大家分享一下ThinkPHP5.1中怎么实现增删改查操作日志记录的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完
  给大家分享一下ThinkPHP5.1中怎么实现增删改查操作日志记录的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
 
  一、ThinkPHP 5.1的日志记录功能简介
 
  在ThinkPHP 5.1中,日志记录功能已经内置。我们可以在应用程序中使用它来记录各种事件,如错误消息、调试信息和用户操作等。框架提供了四个级别的日志记录:DEBUG、INFO、NOTICE和ERROR。
 
  除了内置的日志级别外,我们还可以定义自己的日志级别。例如,我们可以创建一个日志级别“CRUD”,用于记录增删改查操作。
 
  在默认情况下,日志将记录到应用程序根目录下的log目录中。如果需要更改日志存储位置,可以通过修改配置文件来实现。配置文件一般位于应用程序的config目录中。
 
  二、增删改查操作日志记录实现
 
  我们来看看如何在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,用于指定不记录日志的字段。
 
  为数据表添加日志字段
 
  接下来,我们需要为数据表添加一些字段来记录增删改查操作。我们可以为每个数据表添加以下字段:
 
  id(自增主键)
 
  user_id(操作用户id,可为空)
 
  action(操作类型,如增加、删除、修改)
 
  table_name(操作的数据表名)
 
  data(操作的数据)
 
  created_at(操作时间)
 
  在Model中重写增删改方法
 
  现在我们需要在Model中重写增删改方法,以实现日志记录。我们将使用全局查询作用域来实现它。我们将重写create、update和delete方法。
 
  在每个方法中,我们将记录相应的操作类型和数据。然后,我们将通过使用日志类将日志写入日志文件。
 
  以下是一些示例代码:
 
  namespace app\common\model;
 
  use think\Model;
 
  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中对增删改查操作进行日志记录的功能。
 

(编辑:92站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章