Sabtu, 27 January 2024

Laravel Log Daily Tanpa Third-party Package

Dalam artikel ini, saya akan memberikan tips tentang bagaimana cara membuat laporan log itu perhari. Karena log yang dibawah laravel by default itu bertipe **single**, yang mana ini kurang membantu, bukan tidak membatu ya, tapi kurang.

Laravel

Dalam artikel ini, saya akan mengulas cara mengatur laporan log Laravel agar tercatat setiap hari. Secara default, Laravel menggunakan pengaturan log bertipe single, yang artinya semua log terkumpul dalam satu file. Walaupun ini tidak sepenuhnya buruk, namun dalam banyak situasi, terutama di lingkungan produksi, tipe log ini kurang efektif.

Log Harian (Daily Log)

Mengapa log harian itu penting? Dalam produksi, kebutuhan untuk menganalisis berbagai kesalahan yang tak terduga sangatlah vital. Bayangkan mencoba menelusuri masalah dari satu file log raksasa dengan lebih dari sejuta baris. Tidak hanya membingungkan, tapi juga tidak efisien.

Solusinya terletak pada file logging.php di dalam folder config. Di sini, Anda bisa menentukan tujuan log, baik itu ke Slack, sistem internal, atau tempat lain. Namun, perhatikan LOG_CHANNEL, yang secara default diarahkan ke stack dan memilih tipe log single which is laravel.log. Kita akan mengubahnya menjadi log harian.

Sebenarnya, perubahan ini bisa langsung dilakukan di file logging.php. Namun, pendekatan yang lebih fleksibel adalah melalui file .env. Dengan cara ini, kita bisa menghindari perubahan langsung pada file konfigurasi, yang memungkinkan kita lebih mudah melakukan penyesuaian di masa depan tanpa harus menyentuh file konfigurasi asli.

Jika Anda menggunakan laravel 11, maka file tersebut bisa di publish melalui perintah artisan yaitu: php artisan config:publish.

Perhatikan pada bagian LOG_CHANNEL, dan kurang lebih isinya akan seperti ini:

.env
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

Nah untuk membuatnya menjadi daily, tinggal merubah channelnya saja seperti:

.env
LOG_CHANNEL=daily

Dengan begitu, maka log akan otomatis membuat file baru dengan tanggal yang dimana error itu muncul. Seperti contoh yang ada, saya akan menunjukkan beberapa file yang ada.

storage/logs
├── laravel-2023-12-08.log
├── laravel-2024-01-12.log
└── laravel-2024-01-19.log

File Akan Banyak

Mungkin Anda berfikir log akan terus dibuat setiap hari, namun kren nya tidak. Log akan dibuat jika memang ditemukan error, maka dengan contoh di atas, 2023-12-09 - 2024-01-11 tidak ada error, maka file tidak akan digenerasi.

Hapus File Logs

Anda tentu bisa mengelola log tersebut, baik secara manual maupun otomatis. Sebagai contoh, bila log tiga bulan lalu sudah tidak relevan, Anda bisa mengatur penghapusan otomatis menggunakan fitur schedule Laravel. Cara pengaturan dan penerapannya bisa Anda pelajari lebih lanjut di artikel Laravel Task Scheduling, yang membahas tuntas tentang bagaimana mengatur tugas terjadwal di Laravel. Ini merupakan cara cerdas untuk menjaga kebersihan dan efisiensi data log Anda.

Manual

Namun jika ingin tetap manual, bisa dengan hanya menjalankan perintah ini di terminal.

Terminal
rm storage/logs/laravel-*.log

Laravel Scheduler

Dengan begitu, maka semua log akan terhapus. Jika Anda mau, tentu Anda bisa menggunakan schedule dengan membuat 1 baris kode seperti berikut.

app/Console/Kernel.php
$schedule->exec('find storage/logs -name "laravel-*.log" -mtime +90 -delete')->daily();

Laravel Log UI

Tak perlu repot membuka folder storage/logs setiap kali ingin cek error. Ada banyak pilihan paket pihak ketiga yang memudahkan Anda dalam melihat dan menganalisis error yang tercatat.

Untuk lebih jelasnya, cek artikel Penampil Log Terbaik untuk Laravel: Rekomendasi dan Panduan. Di sini, Anda akan temukan berbagai opsi yang bisa mempermudah pekerjaan Anda.

Kesimpulan

Hei para developer! Baru saja saya selesai membuat tutorial tentang mengubah pengaturan log di Laravel dari 'single' menjadi 'daily'. Perubahan ini akan membuat Laravel mencatat log baru setiap hari, memudahkan kita dalam menganalisis error, terutama untuk aplikasi dengan banyak pengguna.

Ayo, bagikan pengetahuan ini ke teman-teman developer lainnya! Share di grup, media sosial, atau forum yang kalian ikuti. Ini bukan hanya tentang membantu mereka mengatur log aplikasi dengan lebih baik, tapi juga tentang berbagi dan belajar bersama di dunia pengembangan web. Mari kita tingkatkan skill kita bersama-sama dengan Parsinta!