
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
Posting Komentar