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.

    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!

    Karteil
    Destinasi Utama Belajar Online dengan Format Tulisan yang Elegan
    Kunjungi Sekarang

    Irsyad A. Panjaitan

    Let's start living like no one can help us in any event, so that when we are helped in certain times, it becomes a plus in itself.

    Go to Irsyad A. Panjaitan profile
    Support me
    SaweriaGithub