Situs ini mengatakan
Penebang mungkin diberi level. Level adalah instance dari kelas log4net.Core.Level. Tingkat berikut ditentukan dalam urutan peningkatan prioritas :
- SEMUA
- DEBUG
- INFO
- MEMPERINGATKAN
- KESALAHAN
- FATAL
- MATI
DEBUG tampaknya memiliki prioritas terendah dan ERROR lebih tinggi.
Pertanyaan
- Jika saya mengatur Min dan Max contoh DEBUG dan ERROR akan mencetak semua DEBUG, INFO, WARN dan ERROR. Tanpa menggunakan filter min dan max. Jika saya menentukan ERROR (Logging level = ERROR) Apakah itu termasuk DEBUG, INFO & WARN
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
Alih-alih filter min dan maks. Apakah mungkin untuk mengonfigurasi level dan menyertakan semua level lain di bawahnya untuk logging.
Contoh - Setel level sebagai Error yang akan menyertakan DEBUG, INFO, WARN, dan ERROR. Apakah ini mungkin dengan log4net?
Memposting konfigurasi log4net berdasarkan salah satu komentar:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections >
<log4net debug="true">
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<layout type="log4net.Layout.XMLLayout" /> -->
<param name="File" value="TestLog.log" />
<param name="AppendToFile" value="false" />
<layout type="log4net.Layout.PatternLayout">
<header type="log4net.Util.PatternString" value="[START LOG] %newline" />
<footer type="log4net.Util.PatternString" value="[END LOG] %newline" />
<conversionPattern value="%d [%t] %-5p - %m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
<logger name="log4NetExample">
<!-- <appender-ref ref="B" /> -->
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</logger>
</log4net>
levelMax
? Saya pikir itu harus mencakup semua yang ada di bawahnya jika Anda tidak menentukanlevelMin
Jawaban:
Ini mungkin membantu untuk memahami apa yang dicatat pada level apa Logger dapat ditetapkan levelnya. Level adalah instance dari kelas log4net.Core.Level. Tingkat berikut ditentukan dalam urutan peningkatan keparahan - Tingkat Log.
Jumlah level yang direkam untuk setiap level pengaturan:
sumber
Untuk sebagian besar aplikasi, Anda ingin menetapkan level minimum tetapi bukan level maksimum.
Misalnya, saat men-debug kode Anda, setel level minimum ke DEBUG, dan dalam produksi setel ke WARN.
sumber
<level value="ALL" />
menjadi<level value="WARN" />
dan Anda hanya akan mendapatkan peringatan dan kesalahan.DEBUG akan menampilkan semua pesan, INFO semua kecuali pesan DEBUG, dan seterusnya.
Biasanya seseorang menggunakan INFO atau WARN. Ini tergantung pada kebijakan perusahaan.
sumber
Berikut adalah beberapa kode yang menceritakan tentang prioritas semua level log4net:
sumber
Seperti yang telah dicatat orang lain, biasanya lebih baik untuk menentukan tingkat penebangan minimum untuk mencatat tingkat itu dan tingkat lainnya yang lebih parah daripada itu. Sepertinya Anda hanya memikirkan tentang level logging mundur.
Namun, jika Anda menginginkan kontrol yang lebih cermat atas pencatatan tingkat individu, Anda dapat memberi tahu log4net untuk mencatat hanya satu atau beberapa tingkat tertentu menggunakan sintaks berikut:
Atau untuk mengecualikan tingkat logging tertentu dengan menambahkan node "tolak" ke filter.
Anda dapat menumpuk beberapa filter bersama untuk menentukan beberapa level. Misalnya, jika Anda hanya menginginkan level WARN dan FATAL. Jika level yang Anda inginkan berurutan, maka LevelRangeFilter lebih sesuai.
Dokumen Referensi: log4net.Filter.LevelMatchFilter
Jika jawaban lain belum memberi Anda informasi yang cukup, mudah-mudahan ini akan membantu Anda mendapatkan apa yang Anda inginkan dari log4net.
sumber
by adding a "deny" node to the filter
bagaimana?Benar, dokumentasi resmi ( Apache log4net ™ Manual - Pendahuluan ) menyatakan bahwa ada level berikut ...
... tetapi anehnya ketika saya melihat assembly log4net.dll, v1.2.15.0 kelas tertutup log4net.Core.Level saya melihat level berikut ditentukan ...
Saya telah menggunakan TRACE sehubungan dengan PostSharp OnBoundaryEntry dan OnBoundaryExit untuk waktu yang lama. Saya bertanya-tanya mengapa level lain ini tidak ada dalam dokumentasi. Selanjutnya, apa prioritas sebenarnya dari semua tingkatan ini?
sumber
Coba seperti ini, itu berhasil untuk saya
Ini mencatat 3 jenis kesalahan - kesalahan, info, dan peringatan
sumber