Langsung ke konten utama

Cara Implementasi Activity Log yang Efektif di Framework Laravel

Pendahuluan

Bayangin lagi ngerjain fitur sederhana, tapi tiba-tiba klien nanya siapa yang hapus data krusial di database padahal nggak ada notifikasi apa-apa. Saya sering ngalamin ini di fase awal project, di mana kita terlalu fokus bikin fitur jalan sampai lupa kalau audit trail itu penting banget. Nggak lucu kan kalau kita harus buka-buka raw database log yang ribet cuma buat nyari tahu siapa yang salah pencet tombol?

Tips & Best Practices

Di banyak project, biasanya saya mulai dari bikin satu base class atau trait biar nggak nulis ulang kode logging di setiap controller. Kedua, selalu pisahin data penting dari data sensitif; jangan sampai password atau token ikut kesimpan di log. Terakhir, saya lebih suka pakai queue biar proses pencatatan log nggak bikin request user jadi kerasa lemot saat aplikasi lagi ramai-ramainya.

Contoh Kode

Biasanya saya pakai model Activity sederhana untuk mencatat aksi user di dalam BaseController atau lewat Observer. Contohnya begini:

<pre>public function logActivity($action, $model) {
Activity::create([
'user_id' => auth()->id(),
'action' => $action,
'subject_id' => $model->id,
'subject_type' => get_class($model),
'payload' => json_encode(request()->all())
]);
}</pre>

Variasi Implementasi

Kalian punya dua jalan utama: bikin sendiri dari nol atau pakai package siap pakai kayak spatie/laravel-activitylog. Kalau project-nya skala kecil dan simpel, custom log sendiri lebih ringan. Tapi kalau butuh fitur advance seperti versioning data atau audit trail yang kompleks, mending pakai library yang udah teruji biar nggak buang waktu buat bugfix log system sendiri.

Kesalahan Umum

Pertama, nyimpen semua request body mentah-mentah tanpa filter. Kedua, lupa hapus atau archive log lama yang akhirnya bikin tabel database bengkak. Ketiga, taruh proses logging di main thread tanpa queue, padahal tiap write ke DB itu mahal banget. Keempat, akses user yang nggak divalidasi, jadi log-nya malah berisi data null. Kelima, terlalu paranoid sampai mencatat tiap klik tombol yang nggak perlu, jadinya malah bikin database penuh sampah.

Ringkasan

Ngurusin activity log itu emang kelihatan kayak kerjaan tambahan yang ngebosenin di awal. Tapi percayalah, pas ada disaster di production, sistem logging yang rapi bakal jadi penyelamat karir kalian. Fokus aja ke data yang emang penting buat di-track, jaga performa tetap stabil, dan tidur kalian bakal jauh lebih nyenyak tiap kali rilis fitur baru.

Komentar

Postingan populer dari blog ini

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Cara Reset Password Database MySQL Menggunakan Laragon

Cara Reset Password Database MySQL Menggunakan Laragon Laragon adalah salah satu lingkungan pengembangan lokal (local development environment) yang populer di antara para pengembang web. Dalam beberapa kasus, mungkin kita perlu mereset password database MySQL pada Laragon jika lupa password atau untuk alasan keamanan tertentu. Berikut adalah langkah-langkah yang dapat kita ikuti untuk melakukan reset password database MySQL menggunakan Laragon:

Apa Itu R dan L di Headset? Ini Dia Perbedaan dan Fungsinya yang Perlu Anda Ketahui

Arti R dan L di Headset: Apa Perbedaannya? Headset adalah alat yang digunakan untuk mendengarkan suara dari sumber audio seperti ponsel, komputer, atau pemutar musik. Headset biasanya terdiri dari dua bagian, yaitu earphone yang dimasukkan ke dalam telinga dan mikrofon yang digunakan untuk berbicara. Pada earphone, kita sering melihat ada tulisan R dan L. Apa arti dan perbedaan dari kedua huruf tersebut?