Saya menjawab ini berasal dari arsitektur berbasis komponen, di mana suatu organisasi dapat menjalankan banyak komponen yang dapat saling bergantung. Selama kegagalan penyebaran, level logging harus membantu mengidentifikasi komponen mana yang terpengaruh dan mana yang merupakan akar penyebab.
GALAT - Komponen ini mengalami kegagalan dan penyebabnya diyakini internal (setiap pengecualian internal, tidak tertangani, kegagalan dependensi yang dienkapsulasi ... misalnya database, contoh REST akan menerima kesalahan 4xx dari dependensi). Keluarkan aku (pengelola komponen ini) dari tempat tidur.
PERINGATAN - Komponen ini memiliki kegagalan yang diyakini disebabkan oleh komponen dependen (contoh REST adalah status 5xx dari dependensi). Dapatkan pengelola komponen ITU dari tempat tidur.
INFO - Hal lain yang ingin kami sampaikan kepada operator. Jika Anda memutuskan untuk mencatat jalur bahagia maka saya sarankan membatasi 1 pesan log per operasi yang signifikan (misalnya per permintaan http masuk).
Untuk semua pesan log, pastikan untuk mencatat konteks yang bermanfaat (dan memprioritaskan membuat pesan menjadi dapat dibaca / berguna daripada memiliki rim "kode kesalahan")
- DEBUG (dan di bawah) - Tidak boleh digunakan sama sekali (dan tentu saja tidak dalam produksi). Dalam pengembangan saya akan menyarankan menggunakan kombinasi TDD dan Debugging (bila perlu) yang bertentangan dengan kode polusi dengan pernyataan log. Dalam produksi, logging INFO di atas, dikombinasikan dengan metrik lain harus memadai.
Cara yang bagus untuk memvisualisasikan level logging di atas adalah dengan membayangkan satu set layar pemantauan untuk setiap komponen. Ketika semua berjalan dengan baik mereka berwarna hijau, jika komponen mencatat PERINGATAN maka itu akan menjadi oranye (kuning) jika ada yang mencatat KESALAHAN maka akan menjadi merah.
Jika terjadi insiden Anda harus memiliki satu (akar penyebab) komponen menjadi merah dan semua komponen yang terkena dampak harus oranye / kuning.