Seorang developer javascript dan khususnya nodejs, pasti sering menggunakan perintah logging untuk menampilkan output pada konsol. Baik untuk keperluan fungsionalitas program ataupun debugging (menampilkan output pada konsol).
console.log()
penggunaan perintah diatas sangat efisien untuk melakukan proses debugging. Biasannya digunakan dalam menampilkan nilai daru suatu variabel pada kondisi-kondisi tertentu. Misalnya, menampilkan nilai variabel pada proses looping.
tidak ada yang salah dengan penggunaan console.log ini, namun ternyata nodejs memiliki beberapa variasi dari console.log yang memiliki fungsi spesifik
8 Cara Menampilkan Log Output pada NodeJS
Varian 1 console log – generic console.log
tipe pertama ini adalah console.log default yang umumnya digunakan oleh developer. Perintah ini menampilkan pesan yang bersifat generic. Artinnya tidak ada pesan khusus yang harus di gunakan diantarannya :
- array
- string
- number
- boolean
- object
itulah mengapa console.log disebut sebagai generic logging karena semua jenis informasi dapat ditampilkan baik yang berupa log info ataupun log error.
sangat disarankan untuk menghindari jenis logging generic ini, karena akan membingungkan (tidak spesifik, terlalu generic) tim support atau developer saat hendak menganalisa log tersebut.
perhatikan contoh dibawah ini, terdapat dua baris kode, keduannya menggunakan console.log(). baris pertama menampilkan info dan baris kedua menampilkan error,
console.log("pesan diekseusi pada tanggal : " + new Date()); console.log("Error pada konektivitas ke SQL DB");
tidak ada perbedaan penyajian visual diantara kedua pesan tersebut meskipun sebenarnya jenis dari dua pesan itu sangatlah berbeda.
Varian 2 console log – menampilkan output khusus error
varian kedua ini berebeda dengan varian pertama yang generic. Perintah ini dapat menampilkan pesan yang khususnya untuk “error” pada aplikasi.
console.log("pesan diekseusi pada tanggal : " + new Date()); console.error("Error pada konektivitas ke SQL DB");
pesan error (pada baris kedua) akan ditampilkan dengan warna merah apabila program dijalankan dengan menggunakan debugger pada visual studio code. ini akan sangat membantu proses debugging yang dilakukan oleh developer saat mencari bugs.
pesan yang ditampilkan dengan fungsi error akan memiliki warna merah terang.
Varian 3 console log – menampilkan output khusus warning
Jenis ini identik dengan console.error() , namun perbedaanya adalah untuk menampilkan peringatan. Error dan peringatan bukanlah hal yang sama jika dipandang dari sisi definisinya.
Error terjadi saat suatu proses tidak dapat dijalankan dan mengakibatkan program berhenti/malfungsi sedangkan warning terjadi sesaat sebelum error tersebut muncul.
untuk menampilkan warning dapat menggunakan perintah console.warn().
pesan yang di tuliskan dengan fungsi warn akan memiliki warna kuning tua.
Varian 4 console log – menghapus seluruh log output
jenis ke empat ini tidak menampilkan suatu pesan ke konsol. Melainkan suatu fungsi yang dapat menghapus seluruh log yang ada sebelumnya.Fungsi ini jarang digunakan karena memang log harus ditampilkan untuk keperluan investigasi saat terjadi error.
console.log("pesan diekseusi pada tanggal : " + new Date()); console.warn("peringatan sebelum error"); console.error("Error pada konektivitas ke SQL DB"); console.clear();
Namun, pada kasus tertentu misalkan melakukan live debugging pada browser, perintah ini dapat dimanfaatkan untuk menghapus jejak-jejak debug sebelumnya.
Jika kode diatas dieksekusi maka tidak akan ada output yang ditampilkan pada konsol.
Varian 5 console log – mencari latency dari suatu proses
bagi seorang backend developer, salah satu KPI (Key performance idicator) dari suatu API adalah terkait dengan kecepatan pemrosesan. Biasannya dihitung dari saat API tersebut dipanggil oleh client hingga response diberikan kepada client tersebut
console.time('timer'); for(var i = 1;i<=10;i++){ console.log(i); } console.timeEnd('timer'); // end of <code>
Varian ke lima dari console log ini dapat dimanfaatkan untuk mencari latensi proses dari suatu kode (start & end).
Melalui kode diatas, developer dapat mengetahui berapa lama (latency) dari proses looping angka 1 hingga 10 diatas.
fungsi console timer ini juga dapat digunakan untuk proses async, namun jangan lupa untuk menggunakan await agar latency dapat diukur dengan benar.
Varian 6 console log – menampilkan output dengan bentuk tabel pada konsol
sejujurnya, belum pernah terbayangkan mengenai menampilkan log info ataupun log error dengan menggunakan tabel. Tetapi, varian console log ini dapat menampilkan pesan ke konsol dengan menggunakan format tabel.
console.table({proses_A: 1, proses_B:2, proses_C:3})
Kemungkinannya adalah untuk menampilkan suatu fungsi kode yang memiliki logika bisnis yang sangat kompleks sehingga proses debugging memerlukan visualisasi berupa tabel.
salah satu contoh yang paling mungkin adalah untuk kebutuhan debugging atau logging proses yang melakukan agregasi data.
Varian 7 console log – mencari total eksekusi dari suatu fungsi
pada varian ke 7 ini, merupakan fungsi console log yang berfokus untuk menghitung jumlah eksekusi terhadap suatu proses. Umumnya digunakan pada prosesi looping() ataupun while()
console.time('timer'); for(var i = 1;i<=10;i++){ console.count(i) } console.timeEnd('timer'); // end of <code>
kode diatas akan menghitung berapa kali proses iterasi yang ada di fungsi loop tersebut.
Sangat berguna untuk melakukan proses debugging kode yang melibatkan dua fungsi tersebut (for loop ataupun while).
Sebenarnya tidak hanya terbatas pada for loop dan while, pada es5 ketas terdapat berbagai macma fungsi yang memiliki proses iterasi seperti forEach, reduce, map dan lain sebagainnya.
Varian 8 console log – mengelompokan log output berdasarkan jenis nya
varian terahir ini merupakan varian yang sangat menguntungkan dan harus dipertimbangkan untuk selalu di implementasikan disetiap project. Ambil contoh suatu aplikasi backend REST API, dalam satu kali API invocation, akan terdapat berbagai macam proses seperti :
- [token] mencocokan nilai token oauth2
- [middleware router] mengambil id user pada url
- [database-dao] mengambil data dari database dengan foreign key id user tersebut
- [http-response] menampilkan data dari database ke client
empat proses memiliki fungsionalitas berbeda. Fungsi pertama menjalankan fungsi validasi token. Fungsi kedua menambil nilai id dari url parameter, umumnya di level middleware. Proses ketiga melakukan konektivitas ke database dan proses ke empat menampilkan pesan itu ke user dengan protokol http.
Apabila terjadi error pada salah satu fungsi tersebut namun error yang ditampilkan tidak memiliki kategori, ini akan membuat bingung developer atau tim support yang bertanggung jawab atas operasi aplikasi tersebut. Karena error tidak spesifik mengarah ke proses tertentu (proses 1-4).,
console.group('token') console.log('memulai proses pengambilan token'); console.warn('token hanya berjumlah 5 digit'); console.error("token tidak valid. gagal melakukan validasi token") console.groupEnd('token'); console.group('database-dao') console.log('memulai proses koneksi ke MSSQL'); console.error("autentikasi ke MSSQL gagal") console.groupEnd('database-dao');
Disinilah peranan console log yang dapat mengelompokan pesan error atau info berdasarkan karakteristiknya.
pesan error ataupun info akan ditampilkan secara teratur dan terstruktur berdasarkan jenis proses-nya. Hal ini akan sangat membantu dalam proses debugging saat production.
Happy debugging !~