Rabu, 25 Oktober 2017

Tutorial Sederhana Menambahkan Logger pada Java

Objek logger digunakan untuk men-log (menulis) pesan dari proses yang saat ini sedang dieksekusi oleh program menjadi sebuah log file. Logger sangat berguna untuk memberikan informasi tentang proses yang berlangsung pada program, sehingga kita dapat mengetahui bagian mana (ditampilkan dalam urutan line ke-n) yang berhasil di eksekusi dan yang gagal dieksekusi. Dengan begitu, kita akan lebih mudah memperbaiki kode program jika terjadi  error pada program kita. Logger memiliki 8 level hirarki antara lain:
ALL
TRACE
DEBUG
INFO
WARN
ERROR
FATAL
OFF

Java sendiri sudah memiliki paket Logger, tetapi yang paling umum digunakan yaitu Logger dari apache. Kalian bisa download Logger apache . jar (versi 1.2.17) di sini. Kemudian kalian bisa extract dan simpan di directory yang kalian inginkan.

Untuk implementasi ke program, silakan simak langkah-langkah di bawah ini:

1. Membuat Project Baru
*Di sini saya menggunakan Eclipse untuk demo contohnya.
Seperti biasa, untuk membuat project baru di eclipse pastikan kalian sudah menginstall eclipse dan membukanya. Kemudia arahkan kursor ke menu File -> New -> Java Project. Atau menggunakan keyboard shortcut ALT+SHIFT+N.

Kemudian isi pada bagian kolom Project Name sesuai keinginan kalian. Lalu klik tombol "Finish".

2. Membuat Class Baru
Setelah project LoggerDemo berhasil dibuat, langkah selanjutnya yaitu membuat Class baru. Klik kanan pada src > New >  Class.

Kemudian akan muncul dialog baru seperti di bawah ini. Isi Nama class yang akan dibuat dan centang "public static void main(String[] args)" pada bagian "Which method stubs would you like to create?". Setelah itu klik tombol "Finish".

3. Konfigurasi Build Path
Masukkan log4j.jar ke dalam library project kalian dengan cara klik kanan pada bagian JRE System Library -> Build Path -> Configure Build Path. Maka akan muncul dialog baru seperti di bawah ini.

Klik tombol "Add Externl JARs...". Cari lokasi log4j.jar yang sudah kalian extract. Kemudian klik tombol "Open". Lalu klik tombol "OK".

4. Membuat log4j.properties
File properties ini diperlukan untuk mendefinisikan setup Logger yang akan digunakan sehingga output bisa sesuai dengan keinginan.
Klik kanan pada project (ingat, project. bukan src :D). Pilih New -> Folder. Lalu akan muncul dialog seperti di bawah ini. 

Isi kolom Folder Name dengan "properties" (misal). Kemudian klik tombol "OK". Folder ini digunakan untuk menyimpan file properties sehingga terlihat lebih rapi dan tidak jadi 1 dengan package Class file. Setelah berhasil membuat folder properties, langkah selanjutnya yaitu klik kanan pada folder tersebut, pilih New -> Other -> File.


Pada bagian File Name isi dengan "log4j.properties". Kemudian klik tombol "Finish".



File log4j.properties secara otomatis akan terbuka di halaman kerja Eclipse. Setelah itu masukkan kode seperti di bawah ini.

log4j.rootCategory = ALL,GUIDE
log4j.appender.GUIDE=org.apache.log4j.ConsoleAppender
log4j.appender.GUIDE.layout=org.apache.log4j.PatternLayout
log4j.appender.GUIDE.layout.ConversionPattern=%d [%t] %-5p %c{1} %m%n

kode tersebut dipakai jika kalian ingin menampilkan Logger di dalam console, fungsinya mirip dengan System.out.println();. Namun, jika kalian ingin menampilkannya dalam bentuk file.log, kalian gunakan kode di bawah ini.

log4j.rootCategory = ALL,GUIDE
log4j.appender.GUIDE=org.apache.log4j.RollingFileAppender
log4j.appender.GUIDE.File=./log/demologger.log
log4j.appender.GUIDE.MaxFileSize=1MB
log4j.appender.GUIDE.MaxBackupIndex=5
log4j.appender.GUIDE.layout=org.apache.log4j.PatternLayout
log4j.appender.GUIDE.layout.ConversionPattern=%d [%t] %-5p %c{1} %m%n

Pada bagian ini log4j.appender.GUIDE.File=./log/demologger.log merupakan definisi direktori untuk menyimpan file.log serta nama file .log yang akan digunakan untuk menuliskan sederetan logger. Sehingga kalian harus membuat folder yang bernama "log" terlebih dahulu di project kalian dengan langkah-langkah yang sama seperti membuat folder "properties". Kemudian tambahkan juga file baru yang bernama "demologger.log" dengan cara yang sama seperti membuat file "log4j.properties". Jika kalian menambahkan dua properties di atas (pertama dan kedua) maka properties yang org.apache.log4j.ConsoleAppender (pertama) diabaikan oleh program dan mengeksekusi properties yang org.apache.log4j.RollingFileAppender (kedua). Sehingga file "demologger.log" akan menyetak Logger yang kalian definisikan pada program. Agar kalian tidak bingung, sebagai demo, saya gunakan properties yang pertama pada file "log4j.properties". Sehingga Logger akan ditulis di console.

5. Menulis Kode untuk Logger
Sebagai contoh, tuliskan kode program pada file LoggerTest.java seperti di bawah ini:
import org.apache.log4j.Logger;

public class LoggerTest {

 private static final Logger logger = Logger.getLogger(LoggerTest.class);

 public static void main(String[] args) {
  logger.info("**********Program Start**********");
  try {
   String word = "Hello World!";
   logger.debug("Value of word: " + word);
   // cast the variable Sting word into int number
   int number = Integer.parseInt(word);
  } catch (Exception e) {
   logger.error(e.getMessage(), e);
   logger.error(""); //$NON-NLS-1$
  }
  logger.info("**********Program Finish**********");
 }
}

6. Run Configuration
Sebelum program dieksekusi (di-run), kalian harus mengonfigurasi run terlebih dahulu seperti pada gambar di bawah ini:

Masukkan kode ini "-Dlog4j.configuration=file:\" pada Tab Arguments - Kolom VM Arguments seperti pada gambar di bawah ini:

Isi VM Arguments: -Dlog4j.configuration=file:.\properties\log4j.properties.

7. Run Program
Setelah semua konfigurasi selesai, klin tombol Run. Maka Logger akan muncul pada console dan menghasilkan Log seperti di bawah ini:

Dari Log tersebut kita ketahui bahwa terjadi error saat mengonversi variabel String ke variabel Integer (java.lang.NumberFormatException: For input string: "Hello world!"). Pada baris ke-8 dari Log juga ditunjukkan bahwa error terjadi di class LoggerTest.java baris ke-13.

Jika kalian ingin mempraktikkan properties Logger yang ke dua, kalian buka file log4j.properties lagi. Hapus properties yang lama, kemudian ganti dengan properties yang ke dua. Setelah itu run ulang programnya. Maka file demologger.log yang ada di folder log akan berisi hasil Log.

3 komentar:

  1. useful article for logger, thanks for sharing!

    BalasHapus
    Balasan
    1. you're welcome. hope this article useful for you :)

      Hapus
  2. Needed to compose one simple thing yet thanks for the suggestions that you are contributed here. Would like to read this blog regularly to get more updates regarding Software Testing Company in India and Big Data Testing Services

    BalasHapus