Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk melaksanakan pengelogan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan dalam ThinkPHP 5.1

Bagaimana untuk melaksanakan pengelogan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan dalam ThinkPHP 5.1

PHPz
PHPzasal
2023-04-11 09:15:57968semak imbas

ThinkPHP ialah rangka kerja pembangunan PHP yang sangat popular Ia menyediakan pelbagai fungsi yang berkuasa dan menyokong pembangunan pesat. Antaranya, CRUD (CRUD) merupakan operasi asas yang amat diperlukan dalam pembangunan web. Untuk menjejaki operasi aplikasi dengan lebih baik, adalah sangat penting untuk merekodkan log operasi. Dalam artikel ini, kami akan meneroka cara melaksanakan pengelogan operasi tambah, padam, ubah suai dan pertanyaan dalam ThinkPHP 5.1.

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 peristiwa seperti mesej ralat, maklumat penyahpepijatan, tindakan pengguna, dsb. Rangka kerja menyediakan empat peringkat pengelogan: DEBUG, INFO, NOTIS dan ERROR.

Selain tahap log terbina dalam, kami juga boleh menentukan tahap log kami sendiri. Sebagai contoh, kita boleh mencipta peringkat log "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 rakaman log operasi tambah, padam, ubah suai dan semak dalam ThinkPHP 5.1. Kami akan melaksanakannya mengikut langkah berikut:

  1. Buat fail konfigurasi tersuai dalam direktori konfigurasi
  2. Tambah medan log pada jadual data
  3. Tulis semula penambahan, pemadaman dan pengubahsuaian dalam Kaedah Model
  4. Pengelogan
  5. Buat fail konfigurasi tersuai dalam direktori konfigurasi

Pertama, kita perlu mencipta fail konfigurasi tersuai 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 operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan. Kami boleh menambah medan berikut pada setiap jadual data:

  1. id (kunci utama auto-incremented)
  2. user_id (id pengguna operasi, boleh kosong)
  3. tindakan ( Jenis operasi, seperti tambah, padam, ubah suai)
  4. nama_jadual (nama jadual data operasi)
  5. data (data operasi)
  6. dicipta_pada (masa operasi)
  7. Tulis semula kaedah penambahan, pemadaman dan 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. Membalak

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.

Kesimpulan

Dalam artikel ini, kami memperkenalkan cara merekodkan log operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan dalam ThinkPHP 5.1. Dengan membandingkan kaedah operasi tradisional, kami mendapati bahawa menggunakan pengelogan boleh menjejaki operasi aplikasi dengan lebih baik, dan juga boleh digabungkan dengan lebih baik dengan alat lain untuk analisis. Saya harap pembaca boleh menggunakan pengalaman artikel ini untuk meningkatkan kebolehselenggaraan dan kebolehskalaan aplikasi.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengelogan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan dalam ThinkPHP 5.1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn