Log4Net Nedir ve Nasıl Kullanılır?
Merhaba Arkadaşlar,
Log4Net kütüphanesi log4j temel alan .Net projelerimizde loglama faliyetleri için kullandığımız popüler loglama kütüphanelerden birisidir. Ufak çaplı ya da büyük çaplı olsun projelerimizde hata izleme, sistem takibi vb. durumlar için kullanabilieceğimiz çok yararlı bir kütüphanedir. Sizlerle ufak bir proje yaparak genel kullanımını anlatacağım.
Log4Net 7 tip loglama türü mevcuttur. Bunlar;
- ALL : Tüm mesajların loglandığı seviyedir.
- DEBUG : Geliştirme aşamasında kullanılan loglama seviyesi.
- INFO : Uygulamanın durum bilgilerini loglayabileceğiniz seviyedir.
- WARN : Problem teşkil etmeyen fakat önemli olabileceğini düşündüğünüz seviyedir.
- ERROR : Hata durumlarını belirten seviyedir.
- FATAL : Uygulamanızın çalışmayı keseceğini belirten mesaj seviyesidir.
- OFF : Hiç bir mesaj loglanmaz.
Loglama seviyelerin kapsaması aşağıdaki resimde görsel olarak anlatılmıştır.

Log4Net’de farklı loglama seviyeleri olduğu gibi appender olarak adlandırılan log tutulma tipleri mevcuttur. Bunlardan başlıca olanlar şunlardır;
- ConsoleAppender
- FileAppender
- AdoNetAppender
Daha detaylı bilgi için Apache Log4Net sitesini ziyaret edebilirsiniz.
.Net Console uygulamamızla beraber birkaç kullanım şekilleriyle örneğimize geçebiliriz.
- Öncelikle Visual Studio üzerinden Console App (.Net Framework) uygulaması başlatalım.
- Ardından Solution Explorer üzerinden projemize sağ tıklıyor ve Manage Nuget Packages ‘ı seçiyorsunuz.
- Açılan ekran üzerinden search kısmına ‘log4Net’ yazıp paketimizi kuruyoruz.

- Kütüphanemizi kurduktan sonra log4net’in config dosyasını okuyabilmesi adına projemizin içerisinde bulunan Properties atlında AssemblyInfo dosyanın içerisine aşağıdaki kod bloğunu ekleyelim.
|
1 |
[assembly: log4net.Config.XmlConfigurator] |
- Log4net konfigurasyon için app.config ya da web.config dosyası içerisinde aşağıda kod satırını ekleyelim.
|
1 2 3 4 5 6 7 8 |
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <appSettings> <add key="log4net.Config" value="log4.config"/> <add key="log4net.Config.Watch" value="True"/> <add key="log4net.Internal.Debug" value="False"/> </appSettings> |
- Örneğimizde yapılandırma tiplerinden olan FileAppender ve ConsoleAppender’ı config dosyamıza log4net tagları arasına eklememiz gerekmektedir.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<log4net> <appender name="FileAppender" type="log4net.Appender.FileAppender"> <!-- Dosyanın konumu --> <file value="log-file.txt" /> <appendToFile value="true" /> <layout type="log4net.Layout.PatternLayout"> <!-- Mesaj içeriğimizin düzeni --> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> </layout> </appender> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <!-- Mesaj içeriğimizin düzeni --> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> </layout> </appender> <root> <level value="ALL" /> <appender-ref ref="FileAppender" /> <appender-ref ref="ConsoleAppender" /> </root> </log4net> |
- Dosya üzerinde loglama ile yapacağınızda dosya konumu vermezseniz konum olarak /Bin/Debug içerisinde oluşturmaktadır.
- Config dosyamızda root tagları arasına eklediğimiz level tagında ALL seviyesinde appenderların geçerli olacağını belirtiyoruz.
- Belirli level için appender geçerli olmasını istiyorsak appendar tagları arasına aşağıdaki kod ile log seviyemizi belirtmemiz gerekiyor.
|
1 |
<threshold value="Info" /> |
- Config dosyamız üzerinde gerekli ayarları yaptıktan sonra artık loglama işlemine geçebiliriz.
- Öncelikle LogManager ile nesnemizi türetmemiz gerekmektedir. log4net.LogManager.GetLogger parametre olarak çağrıldığı sınıfın tipini almaktadır.
|
1 2 3 4 5 6 7 8 9 10 11 |
namespace Log4NetExample { internal class Program { private static log4net.ILog logManager = log4net.LogManager.GetLogger(typeof(Program)); static void Main(string[] args) { } } } |
- LogManager nesnemizi tanımladıktan sonra try-catch içerisinde örneğimizi koddaki gibi gerçekleştirelim.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
namespace Log4NetExample { internal class Program { private static log4net.ILog logManager = log4net.LogManager.GetLogger(typeof(Program)); static void Main(string[] args) { try { logManager.Info("Info seviyesinde log mesajı."); logManager.Warn("Warn seviyesinde log mesajı."); logManager.Fatal("Fatal seviyesinde log mesajı."); throw new Exception("Error seviyesinde log olması için Exception oluşturuldu."); } catch (Exception ex) { //Oluşan hata mesajını loglamakta logManager.Error(ex.Message); } Console.WriteLine("Çıkış yapmak için bir tuşa basınız."); Console.ReadKey(); } } } |
- Kodumuzu yazdıktan sonra nasıl bir sonuç elde ettiğimize bakmak için projemizi çalıştırıyoruz.
- Aşağıda Console appender sayesinde console üzerinde mesajımızı ve LogFile appender ile txt dosyası üzerinde log mesajlarımızı görmekteyiz.


Yazımda değineceğim konular bu kadardı, okuduğunuz için teşşekür eder ve iyi çalışamalar dilerim.
Medium Blog: Log4Net Nedir ve Nasıl Kullanılır?

Gerçekten çok yararlı bir yazı ellerinize sağlık