
Pendahuluan
Pernah nggak kepikiran, kenapa Laravel terasa begitu tenang saat semuanya berjalan lancar, tapi mendadak bikin panik pas ada error yang nggak jelas sumbernya di production? Saya sering banget nemuin situasi di mana log cuma dibiarkan menumpuk di file laravel.log tanpa struktur, sampai akhirnya pas sistem crash, nyari penyebabnya kayak nyari jarum di tumpukan jerami. Untungnya, Laravel udah ngebungkus Monolog dengan sangat manis, jadi kita tinggal ngatur konfigurasi buat dapetin insight yang lebih dalam tentang aplikasi kita.
Tips & Best Practices
- Di banyak project, biasanya saya mulai dari memisahkan file log berdasarkan modul atau channel agar nggak pusing pas nge-debug.
- Kalau lagi handel project skala besar, saya selalu menyarankan untuk pakai format JSON agar log-nya bisa langsung dibaca sama tools seperti ELK Stack atau Datadog tanpa ribet parsing manual.
- Sebisa mungkin, jangan pernah mencatat data sensitif seperti password atau kartu kredit ke dalam file log, karena ini bakal jadi celah keamanan fatal kalau file-nya bocor.
Contoh Kode
Untuk kebutuhan logging yang spesifik, biasanya saya bikin channel baru di config/logging.php. Contohnya kalau mau memisahkan log untuk pembayaran:
// Tambahin channel baru di config/logging.php
'channels' => [
'payment' => [
'driver' => 'single',
'path' => storage_path('logs/payment.log'),
'level' => 'info',
],
],
// Cara pakainya di controller atau service
Log::channel('payment')->info('Transaksi berhasil dilakukan', ['order_id' => $id]);Variasi Implementasi
Ada dua pendekatan yang sering saya bandingkan. Pertama, pakai single driver buat aplikasi skala kecil, simpel tapi file-nya bakal meledak ukurannya. Kedua, pake daily driver yang otomatis nge-rotate file log tiap hari. Kalau di production yang busy, saya hampir selalu pilih daily supaya nggak bikin disk penuh gara-gara file log yang ukurannya sampai ber-gigabyte.
Kesalahan Umum
- Lupa nge-setup level logging, jadinya debug log yang nggak perlu ikut masuk ke production dan bikin storage penuh.
- Terlalu banyak pakai
dd()atauvar_dump()di production sebagai pengganti logging yang proper. - Nggak pakai context di log, jadi pas lihat log cuma ada pesan error tanpa tahu ID user atau data yang bermasalah.
- File log yang nggak di-rotate, alhasil server mati gara-gara disk space habis total.
- Mengabaikan permission file log, sehingga aplikasi nggak bisa nulis log pas lagi error krusial.
Ringkasan
Pada akhirnya, logging itu bukan cuma soal ngumpulin error, tapi soal punya riwayat perjalanan aplikasi kita. Begitu kamu terbiasa rapi sama log, kamu bakal ngerasa lebih tenang pas harus nge-fix bug di tengah malam. Jangan anggap remeh logging, anggap dia sebagai asisten yang selalu nyatet kejadian di balik layar buat kamu pas lagi buntu.
Komentar
Posting Komentar