lifelong learner — urip iku urup, currently working on accenture.

8 Cara Menampilkan Log Output pada NodeJS Secara Terstruktur

0
Degananda.com -

logging-code-nodejs

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-helloworld.JPG

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 :

  1. array
  2. string
  3. number
  4. boolean
  5. 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.

console-log-generic.JPG

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.

console-log-error-tipe.JPG

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().console-log-warm.JPG

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.

clear-console.JPG

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).

console-time-timer-timeend.JPG

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.

console.table-nodejs.JPG

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.

console-log-count.JPG

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 :

  1. [token] mencocokan nilai token oauth2
  2. [middleware  router] mengambil id user pada url
  3. [database-dao] mengambil data dari database dengan foreign key id user tersebut
  4. [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.

console-grouping.JPG

Happy debugging !~

(Visited 51 times, 1 visits today)

Leave a Reply