Integrasi Laravel dengan Rollbar.com

Laravel punya facade untuk pelaporan log dan kesalahan. Facade ini berbasis pustaka Monolog. Walaupun Monolong punya berbagai media untuk menyimpan pelaporan tersebut, seperti email, file, sampai dengan MongoDB, tapi Laravel hanya menggunakan file untuk menyimpan log-nya.

Pun berbasis berkas, ada beberapa opsi yang ditawarkan oleh Laravel, misal menyimpannya per hari (daily), menyimpan seluruhnya pada satu berkas (single), atau bisa juga disimpan dalam log sistem syslog.

Kekurangannya adalah, kita harus membuka berkas tersebut satu per satu pada server jika terjadi kesalahan. Hal ini cukup kerepotan jika digunakan oleh end-user atau tester yang kurang begitu paham pemrograman.

Dari kekurangan tersebut, memunculkan beberapa pustaka alternatif untuk menampilkan log agar lebih human-readable, seperti Laravel Log Viewer misalnya. Sayangnya, masih belum ada pelaporan realtime ke pemogram. Kita harus mengeceknya secara manual dengan cara membuka peramban.

Masih ada alternatif lagi, Rollbar (rollbar.com).

Rollbar merupakan layanan awan yang menawarkan error tracking untuk berbagai bahasa pemrograman, seperti PHP, Python, JavaScript, dan lain sebagainya. Dengan Rollbar, kita dapat melihat kesalahan yang sering terjadi pada aplikasi serta bagian mana saja yang sering mengalami kesalahan.

Secara bawaan, Rollbar menyediakan berbagai API untuk beberapa bahasa pemrograman, baik server side maupun client side. Tak hanya itu, Rollbar juga menyediakan untuk aplikasi third-party seperti Mailgun dan Logstash.

Instalasi

Sebenarnya, Rollbar sudah menyediakan API untuk bahasa pemrograman PHP. Namun, di luar sana juga terdapat pustaka untuk memudahkan integrasi dengan Laravel. Ialah Laravel Rollbar yang dikembangkan oleh Jens Segers.

Install Laravel Rollbar dengan perintah berikut.

composer require jenssegers/rollbar

composer require jenssegers/rollbar

Langkah selanjutnya, adalah mendaftarkan service provider ke dalam berkas config/app.php.

‘providers’ => [ … Jenssegers\Rollbar\RollbarServiceProvider::class, … ]

‘providers’ => [

Jenssegers\Rollbar\RollbarServiceProvider::class,

]

Sebagai tips, jika hanya ingin menggunakan Rollbar pada enviroment production, kita bisa memuat service provider pada berkas app\Providers\AppServiceProvider.php. Buka berkas tersebut dan modifikasi menjadi seperti di bawah:

/** * Register any application services. * * @return void */ public function register() { if ($this->app->environment(‘production’)) { $this->app->register(\Jenssegers\Rollbar\RollbarServiceProvider::class); } }

/**

* Register any application services.

*

* @return void

*/

public function register()

{

if ($this->app->environment(‘production’)) {

$this->app->register(\Jenssegers\Rollbar\RollbarServiceProvider::class);

}

}

Konfirgurasi

Tambahkan key baru untuk service pada berkas config/service.php.

‘rollbar’ => [ ‘access_token’ => env(‘ROLLBAR_TOKEN’), ‘level’ => env(‘ROLLBAR_LEVEL’), ],

‘rollbar’ => [

‘access_token’ => env(‘ROLLBAR_TOKEN’),

‘level’ => env(‘ROLLBAR_LEVEL’),

],

Karena menggunakan fungsi env(), maka kita menyetal nilainya dari berkas .env. Isi nilai ROLLBAR_TOKEN pada berkas .env sesuai dengan data yang diberikan oleh Rollbar pada saat registrasi dan membuat aplikasi baru.

Penggunaan

Agar aplikasi yang dibangun dengan Laravel otomatis mengirimkan log ke Rollbar apabila terjadi kesalahan, kita bisa menambahkan facade Log ke dalam berkas app/Exceptions/Handler.php.

public function report(Exception $e) { \Log::error($e); return parent::report($e); }

public function report(Exception $e)

{

\Log::error($e);

return parent::report($e);

}

Selain itu, kita juga bisa mengirim log ke Rollbar secara manual dengan facade Log seperti contoh kode di berikut.

Log::emergency(‘Quick, fix me!’); Log::alert(‘Someone tried to hack your system.’); Log::critical(‘Failed to connect to database.’); Log::error(‘Invalid variable $var’); Log::warning(‘Please remove public dirctory.’); Log::notice(‘Hei, you are logged in to our system.’); Log::info(‘Invoice has been paid.’); Log::debug(‘Value $x is ‘ . $x);

Log::emergency(‘Quick, fix me!’);

Log::alert(‘Someone tried to hack your system.’);

Log::critical(‘Failed to connect to database.’);

Log::error(‘Invalid variable $var’);

Log::warning(‘Please remove public dirctory.’);

Log::notice(‘Hei, you are logged in to our system.’);

Log::info(‘Invoice has been paid.’);

Log::debug(‘Value $x is ‘ . $x);

Selengkapnya mengenai error reporting, dapat dibaca langsung pada dokumentasi Laravel.

Setiap fatal error yang terjadi pada aplikasi Laravel pasti akan mengirim log-nya ke Rollbar. Catatan kesalahan tersebut secara realtime akan dikirim ke alamat surel yang kita gunakan untuk mendaftar pada Rollbar. Setiap harinya, Rollbar juga akan membuat rangkuman daftar kesalahan yang sering terjadi. Daftar kesalahan tersebut juga memuat rincian informasi siapa yang mengakses, IP, bot/human, dan lain sebagainya.

Selain mengirim laporan kesahalan melalui surel, kita juga mengintegrasikannya dengan beberapa layanan seperti Asana, Jira, Bitbucket, dan lain sebagainya. Seperti integrasi dengan GitHub misalnya, Rollbar otomatis akan membuat issue pada halaman repositori yang dihubungkan.

Terakhir, Rollbar menyediakan berbagai jenis paket dengan harga yang berbeda-beda. Yang paling murah adalah paket FREE, tanpa biaya bulanan. Namun dengen keterbatasan yang hanya mampu menyimpan 5.000 event setiap bulannya. Bulan berikutnya, event tersebut akan disetel ulang. Saya rasa, cukup untuk proyek personal. 🙂


Originally published at laravel.web.id on December 7, 2016.