Laravel Tips #1 : Membuat Logging dengan Database

Putri Alvina Lutfiani
2 min readAug 21, 2019

Laravel memang sudah menyediakan Log handling, tetapi kita juga bisa membuat logging kita sendiri dan memasukkan data log tersebut ke dalam database untuk mencatat setiap aktivitas user. Data ini berguna untuk memantau jalannya sistem yang dibuat.

Log yang akan dijelaskan yaitu peng-input-an manual di setiap fungsi di dalam controller dengan caption yang dapat disesuaikan sesuai fungsi yang ada. Selain itu, ada peng-input-an yang dapat dipadukan dengan Event Listener yang disediakan oleh Laravel yang mencatat kegiatan seperti Autentikasi meliputi Login, Logout, Failed Login, Register, Reset Password dan Email Verification. Ini dapat dijelaskan pada tulisan selanjutnya. Bisa dibaca di sini Laravel Tips #2 : Logging dengan Database dan Event Listener Laravel.

Tulisan ini juga merupakan catatan saya agar tidak hilang dan dapat digunakan orang lain — jika dibutuhkan. Sebagai catatan, ini bukanlah best practice penggunaan Laravel.

Photo by Caspar Camille Rubin on Unsplash

Pertama, buat migrasi untuk database dengan tabel bernama logs.

php artisan make:migration create_logs_table --create=logs

Isi file migrasi tersebut dengan kode seperti berikut :

<project_file>\database\migrations\<date>_create_logs_table.php

Kolom user_id adalah kolom untuk menyimpan id user yang sedang login jika melakukan suatu aktivitas atau menjalankan suatu fungsi yang ditanamkan kode logging yang dibuat. Jika user tidak sedang login, maka data otomatis null, maka dari itu kolom dibuat nullable. Kolom ip adalah kolom untuk mencatat ip device yang digunakan user. Kolom event adalah aktivitas utama yang dilakukan user. Kolom extra adalah kolom tambahan yang digunakan untuk menambah keterangan dari event utama yang dilakukan.

Kedua, membuat model. Model ini yang akan digunakan sebagai pencatat (record) guna memasukkan event ke database.

php artisan make:model LogDB

Tambahkan kode seperti berikut :

<project_file>\app\LogDB.php

Model ini dapat digunakan pada semua controller yang akan ditanamkan kode logging. Model ini juga dapat digunakan untuk logging yang dipadukan dengan event listener yang sudah disediakan oleh Laravel (akan dijabarkan pada tulisan berikutnya).

Ketiga, menggunakan kode logging pada controller. Sesudah membuat database dan model, maka kode dapat ditambahkan dalam controller. Contohnya adalah pada kode berikut :

HomeController.php

Line utama dalam pencatatan logging ada pada

LogDB::record(Auth::user(), 'accessing home page', 'this is extra log');

Skenario dalam controller ini adalah jika user mengakses halaman index utama, maka akan tercatat. Data ini yang akan masuk ke dalam database logs. Logging ini dapat digunakan pada seluruh controller yang diinginkan dengan catatan kode penting yang dibutuhkan yaitu pemanggilan model dan Facade Auth untuk mendapat data autentikasi dan juga line utama logging.

use App\LogDB;use Auth;LogDB::record(Auth::user(), 'accessing home page', 'this is extra log');

Fungsi pencatatan melalui logging manual di setiap fungsi sangat bermanfaat untuk memantau jalannya sistem. Logging dapat dikondisikan pada kondisi failed melalui if else (pengkondisian) pada setiap fungsi, jadi terlihat aktivitas mana saja yang mengalami kegagalan.

Selanjutnya akan dijabarkan logging yang dipadukan dengan event listener bawaan Laravel. Bisa dibaca di sini Laravel Tips #2 : Logging dengan Database dan Event Listener Laravel.

--

--