Ada dua issue log yang kita gunakan saat ini, yaitu menggunakan variabel global dan hanya support teks (bukan log terstruktur).
Saat ini log menggunakan sebuah variabel di level paket. Kita akan mengubahnya menjadi variabel lokal yang kita suntikkan ke paket-paket yang membutuhkan dengan pattern dependency injection.
log.Logger merupakan log berbasis teks yang ramah untuk dibaca mata manusia, namun tool monioring lebih mudah membaca log terstruktur, misalnya dalam format json.
Kita akan mengganti penggunaan log.Logger dengan slog.Logger karena mempunyai kelebihan bisa digunakan dalam format teks maupun terstruktur. slog.Logger juga mempunyai fitur yang lebih kaya seperti fitur leveling log (Debug, Info, Warning, Error).
Untuk kemudahan penggunaan slog.Logger, saya sudah membuat library untuk wrapping slog.Logger di slog-library
Ubah file cmd/cli/main.go menjadi seperti berikut: