Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk melaksanakan penambahan, pemadaman, pengubahsuaian dan menyemak rakaman log operasi dalam ThinkPHP5.1

Bagaimana untuk melaksanakan penambahan, pemadaman, pengubahsuaian dan menyemak rakaman log operasi dalam ThinkPHP5.1

WBOY
WBOYke hadapan
2023-06-03 17:22:061518semak imbas

1. Pengenalan kepada fungsi pengelogan ThinkPHP 5.1

Dalam ThinkPHP 5.1, fungsi pengelogan telah terbina dalam. Kami boleh menggunakannya dalam aplikasi kami untuk merekodkan pelbagai jenis acara, seperti mesej ralat, maklumat penyahpepijatan dan tindakan pengguna. Empat peringkat pembalakan disediakan oleh rangka kerja: DEBUG, INFO, NOTIS dan ERROR.

Selain tahap log terbina dalam, kami juga boleh menentukan tahap log kami sendiri. Kita boleh memberi contoh dengan mencipta tahap log bernama "CRUD" untuk merekod operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan.

Secara lalai, log akan direkodkan ke direktori log di bawah direktori akar aplikasi. Jika anda perlu menukar lokasi storan log, anda boleh berbuat demikian dengan mengubah suai fail konfigurasi. Fail konfigurasi biasanya terletak dalam direktori konfigurasi aplikasi.

2. Pelaksanaan rakaman log operasi tambah, padam, ubah suai dan semak

Mari kita lihat cara melaksanakan pengelogan tambah, padam, ubah suai dan semak operasi dalam ThinkPHP 5.1. Kami akan mengikuti langkah berikut untuk mencapainya:

  1. Buat fail konfigurasi tersuai dalam direktori konfigurasi

  2. Tambah medan log pada jadual data

  3. Tulis semula kaedah penambahan, pemadaman dan pengubahsuaian dalam Model

  4. Rekod log

  5. Buat konfigurasi tersuai dalam direktori konfigurasi Fail

Kita perlu terlebih dahulu mencipta fail konfigurasi tersuai dan meletakkannya dalam direktori konfigurasi aplikasi. Kami namakan fail ini common_extra.php.

$config = [

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

];

Dalam konfigurasi, kami menetapkan dua pilihan. Yang pertama ialah crud_log, yang digunakan untuk menghidupkan atau mematikan log. Yang kedua ialah crud_ignore_fields, yang digunakan untuk menentukan medan yang tidak dilog.

  1. Tambah medan log pada jadual data

Seterusnya, kita perlu menambah beberapa medan pada jadual data untuk merekod penambahan, pemadaman, pengubahsuaian dan operasi pertanyaan. Kita boleh menambah medan berikut pada setiap jadual data:

  1. id (autoincrement primary key)

  2. user_id (operation user id, can kosong )

  3. tindakan (jenis operasi, seperti tambah, padam, ubah suai)

  4. nama_jadual (nama jadual data operasi)

  5. data (data dikendalikan)

  6. dicipta_pada (masa operasi)

  7. Tulis semula penambahan, pemadaman dan kaedah pengubahsuaian dalam Model

Sekarang kita perlu menulis semula kaedah penambahan, pemadaman dan pengubahsuaian dalam Model untuk melaksanakan pengelogan. Kami akan menggunakan skop pertanyaan global untuk mencapai ini. Kami akan mengatasi kaedah cipta, kemas kini dan padam.

Dalam setiap kaedah, kami akan merekodkan jenis operasi dan data yang sepadan. Kami kemudian akan menulis log ke fail log dengan menggunakan kelas log.

Berikut ialah beberapa contoh kod:

namespace appcommonmodel;

gunakan 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

Akhir sekali, kami akan log. Dalam contoh sebelumnya, kami menulis log ke jadual data bernama "log". Walau bagaimanapun, anda boleh menulis log ke fail, menghantarnya ke pelayan log, atau menghantarnya ke tempat lain jika dikehendaki.

Melalui langkah di atas, kami berjaya melaksanakan fungsi operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan dalam ThinkPHP 5.1.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penambahan, pemadaman, pengubahsuaian dan menyemak rakaman log operasi dalam ThinkPHP5.1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam