
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi tiba-tiba klien nanya siapa yang hapus data penting di database tanpa ada jejak sama sekali. Kita sering terjebak dalam rasa aman palsu karena Laravel udah punya sistem log bawaan, padahal untuk urusan audit aktivitas user yang spesifik, kita butuh sesuatu yang lebih tajam dan terpusat. Middleware di Laravel adalah penyelamat paling elegan untuk urusan ini karena dia memotong alur request sebelum menyentuh controller, bikin kita bisa nyatet aksi user tanpa bikin kotor logika bisnis utama.
Tips & Best Practices
Di banyak project, biasanya saya mulai dari membuat file log terpisah agar file laravel.log utama nggak meledak dan susah dibaca. Jangan pernah nulis log langsung ke database di dalam middleware karena itu bikin response time aplikasi jadi lemot; lebih baik gunakan queue atau event listener agar proses pencatatan berjalan di background. Terakhir, selalu pastikan kita cuma log data yang emang perlu, seperti ID user dan endpoint yang diakses, jangan sampai payload sensitif seperti password masuk ke file log.
Contoh Kode
Saya biasanya buat middleware dengan php artisan make:middleware LogAktivitas lalu isi logikanya kayak gini supaya rapi:
public function handle($request, Closure $next)
{
$response = $next($request);
if (auth()->check()) {
Log::channel('activity')->info('User ' . auth()->id() . ' mengakses ' . $request->fullUrl());
}
return $response;
}Variasi Implementasi
Ada dua pendekatan yang sering saya bandingkan. Pertama, pakai middleware global yang memang praktis buat nge-track semua traffic, tapi kadang terlalu 'berisik'. Kedua, pendekatan berbasis route group yang jauh lebih fleksibel; kita bisa pilih cuma route dengan method POST, PUT, atau DELETE aja yang perlu dicatat, sehingga log kita jadi lebih relevan dan nggak bikin server kewalahan sama data yang nggak penting.
Kesalahan Umum
- Seringkali kita lupa nge-filter request sensitif, akhirnya data kartu kredit atau password malah terekam plain di log.
- Pakai perintah
Log::infotanpa dipisahkan channel, akibatnya file log utama jadi tumpukan sampah yang nggak bisa ditelusuri. - Menaruh logika database yang berat di dalam middleware, efeknya aplikasi kerasa nge-lag tiap user klik tombol.
- Lupa nambahin pengecualian buat user anonim, bikin aplikasi error pas user belum login tapi middleware maksa minta ID.
- Nggak ada rotasi log, ujung-ujungnya storage server penuh cuma karena file log membengkak jadi gigabytes.
Ringkasan
Pada akhirnya, logging bukan cuma soal 'mencatat', tapi soal membangun sistem yang bisa diaudit dengan tenang. Setelah nerapin middleware ini, saya merasa lebih pede kalau tiba-tiba dapet komplain dari klien, karena jejak langkah user sudah tertata rapi di channel log tersendiri. Coding itu bukan cuma soal fitur jalan, tapi soal gimana kita tidur nyenyak karena tahu semua aksi kritis sudah punya ' CCTV' digitalnya masing-masing.
Komentar
Posting Komentar