Saya menggunakan appender log4net.Appender.AdoNetAppender.
Tabel log4net saya adalah bidang berikut[Date],[Thread],[Level],[Logger],[Message],[Exception]
Saya perlu menambahkan bidang lain ke tabel log4net (misalnya, SalesId), tetapi bagaimana saya menentukan dalam xml saya dan dalam kode untuk mencatat "SalesId" saat membuat pesan Error atau Info?
misalnya log.Info("SomeMessage", SalesId)
Inilah log4net xml
<appender name="SalesDBAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value ="System.Data.SqlClient.SqlConnection" />
<connectionString value="Data Source=..." />
<commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
LogicalThreadContext
digunakan dengan Tasks, Namun tidak boleh digunakanThreadContext
, karena selalu dibatasi ke utas tertentu.Tiga jenis konteks pencatatan tersedia di Log4Net.
Log4Net.GlobalContext: - Konteks ini dibagikan ke semua utas aplikasi dan domain. Jika dua utas menyetel properti yang sama di GlobalContext, Satu Nilai akan menimpa yang lain.
Log4Net.ThreadContext: - Lingkup konteks ini terbatas pada thread panggilan. Di sini dua utas dapat menyetel properti yang sama ke nilai berbeda tanpa menimpa satu sama lain.
Log4Net.ThreadLogicalContext: - Konteks ini berperilaku mirip dengan ThreadContext. jika Anda bekerja dengan algoritme kumpulan utas khusus atau menghosting CLR, Anda mungkin menemukan beberapa kegunaan untuk yang satu ini.
Tambahkan kode berikut ke file program.cs Anda:
2) Tambahkan definisi parameter untuk kolom kustom:
sumber
Ini adalah versi yang berfungsi dengan beberapa preferensi yang dipersonalisasi. Saya menambahkan kolom kustom untuk menyimpan kode pengecualian yang dihasilkan.
1) Tambahkan kolom kustom Anda (exceptionCode di sini) ke konfigurasi Log4net:
2) Log4NetExtentedLoggingCustomParameters.cs
3) Log4NetExtentedLoggingPatternConverter.cs
4) Log4NetExtentedLoggingPatternLayout.cs
5) Logger.cs // Nikmati logger Anda dengan kolom baru! :)
referensi:
http://blog.stvjam.es/2014/01/logging-custom-objects-and-fields-with
sumber