Jika kamu menjalankan aplikasi di server, kamu perlu menulis log aplikasi ke file. Ini akan membantu kamu men-debug dan menganalisis aplikasi kamu. File log yang baik akan memberi tahu kamu apa kesalahannya, kapan itu terjadi, dan dari mana asalnya. Artikel ini akan menunjukkan cara menulis log ke file di Go.
Mengapa menulis log ke file?
Log adalah bagaimana aplikasi menceritakan kisahnya kepada engineer. Itu mencatat peristiwa yang terjadi pada aplikasi. Sebagai seorang engineer, kamu perlu memantau log aplikasi kamu, terutama log error. Aplikasi yang berjalan di environment production atau bahkan staging perlu menulis log ke file. Ini untuk mempermudah menemukan log dan melihat log yang penting. Ini dapat membantu kamu menentukan apakah kesalahannya kritis atau tidak. Log yang baik juga membantu kamu menemukan root cause dari error lebih cepat.
Cara menulis log ke file
Untuk menulis log ke file di Go, kita perlu membuka file terlebih dahulu dan kemudian mengatur output log ke file. Mari kita lihat contoh kode di bawah ini.
|
|
Pada baris 9, kita memanggil fungsi openLogFile
yang tertulis pada baris 19. Fungsinya untuk membuka file di OS di lokasi file yang diberikan. Kita melakukan ini dengan memanggil fungsi os.OpenFile
. Function ini membutuhkan parameter yaitu lokasi file, flag, dan izin file.
Flags yang kita gunakan adalah:
- os.O_WRONLY: buka file write-only
- os.O_APPEND: menambahkan data ke file saat menulis.
- os.O_CREATE: buat file baru jika tidak ada.
Dan file tersebut diberi izin 644 saat dibuat. Jika kamu ingin membaca lebih lanjut tentang izin file, kamu dapat membaca di sini.
Pada baris 13, kita mengatur output log ke file yang telah kita buka.
Pada baris 14, kita mengatur flag ke log, sehingga menunjukkan tanggal dan waktu, dan baris kode yang menulis log.
Di bawah ini adalah contoh log yang dihasilkan.
2021/10/10 02:38:37.129447 main.go:16: log file created
Di sana kita bisa melihat main.go:16
adalah kode yang memanggil log.Println
. Hanya ditulis nama file karena kita menggunakan flag log.Lshortfile
. Jika kamu memerlukan path lengkap, kamu dapat menggunakan log.Llongfile
sebagai gantinya.
Memisahkan logs file
Terkadang kita ingin memisahkan file log berdasarkan event yang menyebabkannya. Contoh kasus adalah kita memisahkan log error dan log info. Kita dapat melakukan ini dengan membuat logger terpisah untuk error dan info.
Lihat kode di bawah ini.
|
|
Hasilnya seperti ini. info.log:
[info]2021/10/10 03:36:38.734009 main.go:15: this is info
error.log:
[error]2021/10/10 03:36:38.735311 main.go:23: this is error
Kesimpulan
Menulis log ke file penting agar kita bisa melihat event yang terjadi pada aplikasi kita. Hal ini dapat dilakukan dengan mengatur output dari log. Kita dapat memisahkan log ke dalam file yang berbeda agar lebih mudah dimonitor.