Kami menggunakan kombinasi SLF4J + Logback di proyek kami untuk sementara waktu sekarang dan cukup senang dengan itu, tetapi strategi logging kami cukup sederhana, menggunakan penebang berbasis kelas langsung dan tidak ada hal-hal mewah seperti MDC atau Marker.
Yang ingin saya ketahui adalah apakah ada orang di komunitas yang benar-benar menggunakan fitur ini dan bagaimana mereka digunakan untuk meningkatkan pencatatan log / penyaringan.
Saya secara khusus tertarik pada di mana, mengapa dan bagaimana seseorang akan menggunakan [1] Marker untuk login. Mereka menganggap saya sebagai fitur yang cukup rapi untuk menambahkan konteks semantik ke dalam logging - misalnya ketika kelas mungkin menangani beberapa masalah, orang dapat menggunakan penanda spesifik tugas / masalah untuk membedakan pernyataan log.
Apa yang mungkin menjadi praktik terbaik, konvensi atau strategi untuk membuat dan menggunakan spidol dalam logging.
Pembaruan: Saya kira, apa yang benar-benar saya cari bukanlah alasan untuk menggunakan marker, tetapi bagaimana bagiannya - apakah ada beberapa praktik yang baik dalam marker penamaan (mis. Menggunakan teks biasa dengan spasi atau tanda garis / garis bawah / tanda baca dibatasi nama gaya kata kunci yang dibatasi ), haruskah ada semacam kumpulan "nama standar", penamaan barang berdasarkan fungsi bisnis. Pertanyaan-pertanyaan yang mungkin dapat saya pecahkan sendiri, tetapi jika saya ingin menggunakan fitur-fitur ini secara sistematis dan memperkenalkannya kepada tim pengembang, masuk akal untuk memiliki beberapa pedoman yang dapat diformalkan di sekitar ...
[1] - Dengan bertanya bagaimana menggunakan spidol saya tidak benar-benar bertanya bagaimana menggunakan API (ini benar-benar sangat lurus ke depan) - Saya lebih mengacu pada tingkat yang lebih umum tentang bagaimana seseorang mengatur logging sekitar menggunakan spidol secara konsisten
Pertama, MDC.
MDC sangat berguna dalam lingkungan di mana Anda memiliki satu "entitas" yang dikaitkan dengan beberapa perilaku. Contoh khas: pengguna berinteraksi dengan aplikasi web. Jadi, katakanlah Anda memiliki banyak pengguna yang bermain-main dengan aplikasi web Anda. Dengan menggunakan MDC, Anda dapat dengan mudah melacaknya tanpa terlalu banyak kesulitan. Contoh sederhana:
Di sini, Anda menggunakan MDC di dua tempat: untuk nama pengguna dan untuk ID sesi. Dengan cara ini, Anda dapat dengan mudah menangkap sesi satu pengguna untuk melihat semua yang telah mereka lakukan.
Kedua, spidol.
Penanda biasanya digunakan untuk keadaan "khusus", seperti mengirim email ke administrator untuk beberapa kesalahan serius. Tidak semua kesalahan selalu termasuk dalam kategori yang sama; beberapa harus ditangani dengan cara yang tepat.
Atau, ketika pengguna berhenti dari layanan Anda, biasanya masuk ke log INFO, tetapi Anda juga dapat menggunakan penanda untuk kejadian seperti itu, jika Anda ingin acara seperti ini masuk dalam file log yang terpisah, sehingga Anda dapat memonitornya lebih mudah untuk mengumpulkan statistik pengguna yang berhenti.
Aturan praktis:
sumber
Marker dapat digunakan untuk mewarnai atau menandai satu pernyataan log. Apa yang Anda lakukan dengan warna-warna ini, yaitu spidol, sepenuhnya terserah Anda. Namun, dua pola tampaknya umum (yang pertama lebih umum daripada yang kedua) untuk penggunaan marker.
Memicu : Beberapa append dapat diminta untuk mengambil tindakan di hadapan penanda tertentu. Misalnya,
SMTPAppender
dapat dikonfigurasikan untuk mengirim email setiap kali acara logging ditandai denganNOTIFY_ADMIN
marker terlepas dari level log. Lihat pemicu berbasis marker dalam dokumentasi logback. Anda juga dapat menggabungkan level dan penanda log untuk memicu.Pemfilteran : Misalnya, Anda dapat menandai / menandai semua log terkait kegigihan Anda (dalam berbagai dan beberapa file kelas) dengan warna "DB". Anda kemudian dapat memfilter untuk "DB": menonaktifkan pencatatan kecuali untuk laporan log yang ditandai dengan DB. Lihat bab tentang filter dalam dokumentasi logback untuk informasi lebih lanjut (cari MarkerFilter).
sumber
Sama seperti tambahan, jika Anda menggunakan logstash dan mengaktifkan json logging, ada potensi lain penggunaan Marker - untuk variabel logging untuk dikaitkan dengan pesan log tertentu. Ini lebih konsisten dan lebih mudah diurai daripada memasukkannya ke dalam badan pesan. Sangat berguna, jika sesuai dengan use case Anda.
Lihat detailnya di sini:
https://github.com/logstash/logstash-logback-encoder#loggingevent_custom_event
sumber