首頁  >  文章  >  php框架  >  ThinkPHP5.1中怎麼實作增刪改查操作日誌記錄

ThinkPHP5.1中怎麼實作增刪改查操作日誌記錄

WBOY
WBOY轉載
2023-06-03 17:22:061518瀏覽

一、ThinkPHP 5.1的日誌記錄功能簡介

在ThinkPHP 5.1中,日誌記錄功能已經內建。我們可以在應用程式中利用它來記錄不同類型的事件,諸如錯誤訊息、偵錯資訊和用戶操作等。四個等級的日誌記錄由框架提供,分別為:DEBUG、INFO、NOTICE和ERROR。

除了內建的日誌等級外,我們還可以定義自己的日誌等級。我們可以舉例說明,建立一個名為「CRUD」的日誌級別,以記錄增刪改查操作。

在預設情況下,日誌將記錄到應用程式根目錄下的log目錄中。如果需要更改日誌儲存位置,可以透過修改設定檔來實現。設定檔一般位於應用程式的config目錄中。

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

我們來看看如何在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 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());
        }
    });
}

}

  1. 記錄日誌

#最後,我們將記錄日誌。在前面的範例中,我們將日誌寫入名為「log」的資料表中。但是,您可以根據需要將日誌寫入文件,發送給日誌伺服器或將其發送到其他地方。

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

以上是ThinkPHP5.1中怎麼實作增刪改查操作日誌記錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除