Wednesday, June 14, 2017

Implementasi Logging pada Aplikasi

Hi Guys! kembali lagi di sesi sharing bersama Nostra.

Pada kesempatan sharing kali ini Nostra akan sharing tentang bagaimana sih penggunaan Logging yang baik pada aplikasi dan berbagai hal terkait logging tersebut, seperti tujuan dan tips dalam konfigurasi logging. Oh iya logging yang akan kita bahas adalah dengan menggunakan Logback ya guys.

Mari kita mulai dengan membahas apa sih logging itu? dan kenapa logging itu penting?
Jadi logging adalah proses atau kegiatan dimana sistem akan mencatat berbagai hal sesuai yang kita definisikan. Kenapa kita perlu melakukan logging? Well, sederhananya adalah untuk meninjau aplikasi kita dan khususnya untuk mempermudah para developer untuk melakukan proses debugging ketika aplikasi sudah masuk environment production.

Kok bisa gitu? maksudnya 'kita definisikan' itu gimana ya?
Jelas bisa dong, karena ketika aplikasi udah naik ke production tentunya kita ngga selalu melihat console dari aplikasi kita dong? Yep, dan kalaupun kita liat console tapi ngga ada logging di aplikasi maka kita cuma bisa tau informasi ketika ada error atau exception saja melalui console tersebut. Nah dengan adanya logging maka kita akan terbantu karena selain kita bisa tau proses apa yang sedang berjalan melalui console, kita juga bisa melihat log tersebut melalui file yang dihasilkan. Semua itu bisa kita konfigurasi melalui file logback.xml pada aplikasi.
Contoh Konfigurasi 'logback.xml'
Gimana praktik yang baik dalam implementasi logging ini?
Pada dasarnya kita harus tau dulu nih, logging itu punya lima level yang berbeda, yaitu:

  • ERROR --------> Biasanya level ini digunakan untuk logging exception ketika sedang menjalankan suatu proses bisnis atau logic. Idealnya adalah pada saat kita melakukan try-catch terhadap suatu exception, kita melakukan logging dan kemudian throw kembali exception tersebut tanpa harus membuat aplikasi crash.
Contoh Penggunaan Log Level 'ERROR'
  • WARN ---------> Biasanya level ini digunakan untuk logging kondisi dimana terjadi exception pada system process seperti pada contoh di bawah.
Contoh Log Level 'WARN'
  • TRACE -------> Level ini biasanya digunakan ketika proses development, dimana developer sedang melakukan proses tracing terhadap suatu fungsi dan biasanya level ini akan di lepas ketika aplikasi naik ke production. Hal tersebut dikarenakan level ini biasanya digunakan dengan menyertakan informasi sangat detail terkait proses tracing yang sedang dilakukan.
  • DEBUG -------> Level ini biasanya digunakan untuk menandakan method mana yang sedang berjalan, dengan argumen apa, dan apa hasil dari method tersebut. Pada level debug kita tidak perlu melakukan logging sangat detail seperti pada level trace, sebenarnya kita cukup melakukan logging terhadap hal-hal tersebut hanya untuk menunjukkan bahwa proses tersebut telah berjalan. Terkait informasi apa yang akan di log, sebenarnya ini kembali lagi pada kesepakatan tim.
  • INFO ----------> Level ini paling sering digunakan dan sebaiknya digunakan untuk melakukan summary atau review terhadap setiap bisnis proses yang dilakukan, sehingga bisa dilakukan proses auditing dengan membaca log files.

Jadi berangkat dari kelima level itu, gini nih tips maupun saran dalam mengimplementasikan proses logging ke dalam aplikasi.

  1. Manfaatkan kelima level tersebut dengan sebaik-baiknya. Implementasi atau aturan dalam penggunaan level tersebut sebaiknya disesuaikan dengan kesepakatan tim, sehingga seluruh anggota tim dapat membuat log yang konsisten satu dengan lainnya.
  2. Tentukan dan sepakati bersama informasi apa saja yang akan dimasukkan ke dalam log, sehingga proses logging ini akan berdampak positif. Jangan sampai kita melakukan logging terhadap hal-hal yang tidak diperlukan dan malah berdampak negatif ke aplikasi, seperti memberatkan performance atau bisa saja malah log kita memunculkan exception yang akan membuat aplikasi berhenti atau crash.
  3. Berkaitan dengan poin pertama dan kedua, kombinasikan level yang tepat dengan informasi yang tepat ke dalam log. Hal tersebut akan sangat membantu ketika ada proses debugging maupun auditing terhadap aplikasi kita.
  4. Manfaatkan logging pattern pada konfigurasi kalian, dan cobalah untuk membuat pattern yang baik, dengan cara melakukan tuning apabila merasa logging pattern saat ini berdampak negatif pada aplikasi atau mulai terasa pattern tersebut sulit untuk dibaca.
So?
Kesimpulannya adalah logging bersifat penting bagi para tim developer, support, hingga pengguna. Oleh karena itu sebaiknya developer mulai memperhatikan hal tersebut dan terus membiasakan diri untuk membangun aplikasi dengan prinsip clean code, clean log. Selain prinsip tersebut ada juga beberapa prinsip yang juga bagus untuk di adopsi oleh para developer, seperti KISS dan YAGNI.

Akhir kata, sekian dulu sharing tentang logging kali ini. Semoga bermanfaat dan semangat untuk membangun sistem yang lebih baik!

Regards.


Sumber:
https://www.javacodegeeks.com/2011/01/10-tips-proper-application-logging.html
http://blog.schauderhaft.de/2009/09/16/good-logging-practices/
https://www.versionone.com/agile-101/agile-software-programming-best-practices/
http://blog.takipi.com/how-to-instantly-improve-your-java-logging-with-7-logback-tweaks/

No comments:

Post a Comment