ThinkPHP5.1中怎么實現增刪改查操作日志記錄

一、Thinkphp 5.1的日志記錄功能簡介

thinkphp 5.1中,日志記錄功能已經內置。我們可以在應用程序中利用它來記錄不同類型的事件,諸如錯誤消息、調試信息和用戶操作等。四個級別的日志記錄由框架提供,分別為:DEBUG、INFO、NOTICE和Error

除了內置的日志級別外,我們還可以定義自己的日志級別。我們可以舉例說明,創建一個名為“CRUD”的日志級別,以記錄增刪改查操作。

在默認情況下,日志將記錄到應用程序根目錄下的log目錄中。如果需要更改日志存儲位置,可以通過修改配置文件來實現。配置文件一般位于應用程序的config目錄中。

立即學習PHP免費學習筆記(深入)”;

二、增刪改查操作日志記錄實現

我們來看看如何在ThinkPHP 5.1中實現增刪改查操作的日志記錄。我們將按照以下步驟實現:

  1. 在config目錄中創建自定義配置文件

  2. 為數據表添加日志字段

  3. 在Model中重寫增刪改方法

  4. 記錄日志

  5. 在config目錄中創建自定義配置文件

我們需要先創建一個自定義配置文件,放在應用程序的config目錄下。我們把這個文件命名為common_extra.php。

$config = [

'crud_log'?=>?true,?//?記錄增刪改查日志 'crud_ignore_fields'?=>?['create_time',?'update_time']?//?忽略日志記錄的字段

];

在配置中,我們設置了兩個選項。第一個是crud_log,用于開啟或關閉日志記錄。第二個是crud_ignore_fields,用于指定不記錄日志的字段。

  1. 為數據表添加日志字段

接下來,我們需要為數據表添加一些字段來記錄增刪改查操作。我們可以為每個數據表添加以下字段:

  1. id(自增主鍵)

  2. user_id(操作用戶id,可為空)

  3. action(操作類型,如增加、刪除、修改)

  4. table_name(操作的數據表名)

  5. data(操作的數據)

  6. created_at(操作時間)

  7. 在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()); ????????} ????}); }

}

  1. 記錄日志

最后,我們將記錄日志。在前面的示例中,我們將日志寫入名為“log”的數據表中。但是,您可以根據需要將日志寫入文件,發送給日志服務器或將其發送到其他地方。

通過以上步驟,我們成功實現了在ThinkPHP 5.1中對增刪改查操作進行日志記錄的功能。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享