Saya telah membuat skenario sederhana menggunakan Log4net, tetapi tampaknya bahwa log appenders saya tidak berfungsi karena pesan tidak ditambahkan ke file log.
Saya menambahkan berikut ini ke file web.config:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/>
</configSections>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<file value="D:\MyData\Desktop\LogFile.txt" />
<appendToFile value="true" />
<encoding value="utf-8" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="INFO" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
Dalam file ASAX global yang saya tambahkan:
ILog logger = LogManager.GetLogger(typeof(MvcApplication));
Dan dalam metode Application_Start:
logger.Info("Starting the application...");
Mengapa log uji "Memulai aplikasi ..." tidak ditambahkan ke file log?
AssemblyInfo
file. Diposting sebagai jawaban di bawah ini.Gunakan halaman FAQ ini: Apache log4net Pertanyaan yang Sering Diajukan
Sekitar 3/4 dari jalan ke bawah memberitahu Anda cara mengaktifkan debugging log4net dengan menggunakan penelusuran aplikasi. Ini akan memberi tahu Anda di mana masalah Anda.
Dasar-dasarnya adalah:
Dan Anda melihat jejak di output standar
sumber
root
bagian saya merujuk pada penebang yang salah !!Seperti yang disarankan @AndreasPaulsson, kita perlu mengkonfigurasinya. Saya sedang melakukan konfigurasi dalam
AssemblyInfo
file. Saya tentukan diconfiguration file name
sini.sumber
Juga, Pastikan opsi "Salin selalu" dipilih untuk [log4net] .config
sumber
Pastikan proses (akun) yang dijalankan situs memiliki hak istimewa untuk menulis ke direktori output.
Dalam IIS 7 dan di atasnya ini dikonfigurasi pada kumpulan aplikasi dan biasanya AppPool Identity , yang biasanya tidak memiliki izin untuk menulis ke semua direktori.
Periksa log peristiwa Anda (aplikasi dan keamanan) untuk melihat apakah ada pengecualian yang dilemparkan.
sumber
Memasukkan:
di akhir file AssemblyInfo.cs
sumber
Bagi saya, saya memindahkan lokasi file log dan hanya ketika saya mengubah nama file menjadi sesuatu yang lain, file itu mulai lagi.
Tampaknya jika ada file log dengan nama yang sama sudah ada, tidak ada yang terjadi.
Setelah itu saya mengganti nama file lama dan mengubah nama file log di konfigurasi kembali lagi ke apa itu.
sumber
Dalam kasus saya, log4net tidak masuk dengan benar karena memiliki ruang dalam nama proyek saya. Mengecewakan saya mengapa kode yang sama bekerja dengan baik di proyek yang berbeda, tetapi tidak di yang baru. Spasi. Ruang sederhana.
Jadi, waspadalah spasi dalam nama proyek. Saya sudah belajar pelajaran saya.
sumber
Dalam kasus saya, saya harus memberikan
IIS_IUSRS
izin Baca \ tulis ke file log.sumber
Pastikan kode baris berikut ada di file AssemblyInfo.cs.
[perakitan: log4net.Config.XmlConfigurator (ConfigFile = "Web.config", Watch = true)]
dan juga memeriksa baris ini dalam metode Application_start ().
sumber
File konfigurasi Anda tampaknya benar. Kemudian, Anda harus mendaftarkan file konfigurasi Log4net Anda ke aplikasi. Jadi, Anda dapat menggunakan kode di bawah ini:
Setelah proses pendaftaran, Anda dapat memanggil definisi di bawah ini untuk memanggil logger:
sumber
Bagi saya, saya harus memindahkan Logger ke Paket Nuget. Kode di bawah ini perlu ditambahkan dalam proyek paket NuGet.
Lihat https://gurunadhduvvuru.wordpress.com/2020/04/30/log4net-issues-when-moved-it-to-a-nuget-package/ untuk rincian lebih lanjut.
sumber
Ada beberapa cara untuk menggunakan log4net. Saya menemukan itu berguna ketika saya sedang mencari solusi. Solusinya dijelaskan di sini: https://www.hemelix.com/log4net/
sumber