Matawebsite Promo Lebaran 2022

Laravel 8 Error Logging menggunakan Sentry

date 19 Dec 2021
date Lev Yasin
date 1200
date Web Programming
Laravel 8 Error Logging menggunakan Sentry

Dalam production environment, akan sangat bagus untuk mendapatkan peringatan instan jika terjadi kesalahan dalam aplikasi Anda. Jika Anda adalah bagian dari tim besar, maka akan sangat ideal bahwa peringatan akan diteruskan ke orang yang tepat untuk menyelesaikan masalah tersebut.

Bayangkan jika beberapa kesalahan terjadi dalam aplikasi Anda pada lingkungan produksi dan kemudian Anda harus melalui file besar dari log kesalahan untuk menemukan apa yang sebenarnya terjadi pada waktu tertentu untuk pengguna tertentu (terjadi pada saya berkali-kali). Akan sangat ideal untuk menelusuri riwayat kesalahan aplikasi Anda tepat di dalam browser Anda.

Di situlah Sentry berperan. Sentry adalah alat pelacakan kesalahan berbasis cloud yang hadir dengan langganan gratis dan berbayar. Anda dapat menelusuri daftar lengkap fitur di situs web mereka di Sentry.io . Salah satu fitur paling keren dari Sentry adalah fakta bahwa itu sangat mudah untuk diintegrasikan ke dalam aplikasi Anda. Jadi mari kita mulai.

Instalasi

Pertama, Anda harus mendaftarkan akun di situs web Sentry (paket gratis sudah cukup untuk membantu Anda memulai) dan membuat proyek. Proses pembuatan proyek sangat mudah, bahkan ada opsi untuk proyek Laravel yang akan menyesuaikan dokumentasi sesuai dengan proyek Anda. Setelah Anda selesai melakukannya, kembalilah ke sini!

Saya akan menggunakan rilis terbaru Laravel yaitu ^8.0. Untuk membuat aplikasi Laravel baru, saya akan menggunakan perintah composer create-project .

composer create-project laravel/laravel laravel-sentry

Sentry dapat diintegrasikan ke dalam aplikasi Laravel menggunakan paket asli sentry-laravel . Sekarang kita akan menginstal paket ini menggunakan composer.

composer require sentry/sentry-laravel

Setelah package diinstal, kita perlu membuat file konfigurasi untuk paket ini menggunakan perintah di bawah ini.

php artisan vendor:publish --provider="Sentry\Laravel\ServiceProvider"

Saat Anda membuat akun baru di situs Sentry, Anda akan diberikan string DSN yang seperti API key, jika Anda belum menyalinnya, Anda dapat mengambilnya dari area pengaturan. Selanjutnya, kita akan menambahkan key itu ke .env file kita .

SENTRY_LARAVEL_DSN=https://xxxxx@sentry.io/0000000

Di mana xxxxx dan 0000000 akan setara dengan key Anda dari Sentry.

Sentry documentation untuk Laravel akan menyarankan Anda untuk menghubungkan ke menangkap kesalahan Laravel melalui penangan Pengecualian.

Saya selalu mengatur Sentry menggunakan saluran log sehingga akan merekomendasikan Anda mengikuti pendekatan ini karena akan lebih dapat diandalkan.

Untuk menggunakan saluran log, Anda perlu menambahkan saluran baru ke config/logging.phpfile konfigurasi Anda .

'channels' => [
    // ...
    'sentry' => [
        'driver' => 'sentry',
        'level'  => null,
        'bubble' => true,
    ],
],

The level, memungkinkan Anda untuk mengontrol tingkat kesalahan minimum yang akan dikirim ke sentry. Laravel menggunakan Monolog untuk menangani kesalahan, sehingga Anda dapat melihat level yang tersedia dalam dokumentasinya .

The bubble memungkinkan / mencegah kesalahan dari yang dilaporkan ke saluran lain setelah kesalahan yang ditangani oleh Sentry.

Configuring Channel

Untuk mengonfigurasi aplikasi Anda agar menggunakan Sentry sebagai saluran log, cukup ubah LOG_CHANNEL nilainya menjadi di bawah ini.

LOG_CHANNEL=sentry

Mulai sekarang semua error akan dicatat ke Sentry.

Dalam aplikasi saya, saya suka menggunakan opsi stack yang memungkinkan aplikasi kita mencatat error ke beberapa saluran. Saya biasanya menggunakan daily dan sentry sebagai stack karena  pertama-tama suka mencatat kesalahan ke file lokal dan kemudian mengirimkannya ke Sentry. Ini memungkinkan saya untuk melacak kesalahan dalam file log dan itu tidak akan pernah terlewatkan.

Jadi untuk pendekatan saya di atas, perbarui .env file ke bawah.

LOG_CHANNEL=stack

dan dalam config/logging.phpfile perbarui saluran stack seperti di bawah ini.

'channels' => [
        'stack' => [
            'driver'   => 'stack',
            'channels' => ['daily', 'sentry']
        ],
        'daily' => [
            'driver' => 'daily',
            'path'   => storage_path('logs/laravel.log'),
            'level'  => 'debug',
            'days'   => 28,
        ],
        'sentry' => [
            'driver' => 'sentry',
            'level'  => 'debug',
            'bubble' => true,
        ],
    ...
],

Testing Error Logging

Sekarang kita telah mengintegrasikan Sentry ke dalam aplikasi, kita akan menguji apakah semuanya sudah diatur dengan benar. Untuk ini, paket Sentry menyediakan perintah yang keren untuk menguji integrasi.

Di konsol Anda, jalankan perintah di bawah ini.

php artisan sentry:test

Jika semuanya sudah diatur dengan benar, Anda akan melihat output seperti di bawah ini.

[Sentry] DSN discovered!
[Sentry] Generating test Event
[Sentry] Sending test Event
[Sentry] Event sent with ID: 31e6f44928284d67b891bf4b5415fbbb

Kami juga dapat mengujinya dengan throwing an exception, Misalnya, tambahkan route di bawah ini di routes/web.php file Anda dan akses route di browser.

Route::get('/sentry-test', function () {
    throw new \Exception("Sentry Test Exception");
});

Anda akan menerima email peringatan jika Anda telah mengaturnya di area akun Sentry dan juga akan melihatnya di dasboard Sentry seperti di bawah ini.

Matawebsite Promo
lev_yasin.png

Lev Yasin

Instruktur Web Programming Mataweb

Sangat tertarik dengan dunia Pemrograman Web & Mobile, saat ini fokus pada bagian Backend Web Developer, menggunakan PHP sebagai bahasa pemrograman utama, biasanya saya menggunakan Laravel.

Artikel Populer

Halo, ada yang bisa kami bantu?
Daftar Sekarang