Langsung ke konten utama

Cara Membuat Custom Middleware Logging Aktivitas User di Laravel

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::info tanpa 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

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?