Log4Net Database Logx

Log4Net .net uygulamaları için geliştirilmiş olan açık kaynak kodlu bir log’ lama kütüphanesi ve Java’da bulunan loglama aracı Log4J'nin .NET uyarlamasıdır.

 

Log Seviyeleri

ALL : Tüm mesajların loglandığı seviyedir.

DEBUG : Developement aşamasına yönelik loglama seviyesidir.

INFO : Uygulama içerisindeki bilgileri loglayabildiğiniz seviyedir.

WARN : Hata olmayan fakat önemli bir durumun oluştuğunu belirtebileceğimiz seviye.

ERROR : Hata durumunu belirten seviye. Sistem hala çalışır haldedir.

FATAL : Uygulamanın sonlanacağını, faaliyet gösteremeyeceğini belirten mesajlar için kullanılacak seviyedir.

OFF : Hiç bir mesajın loglanmadığı seviyedir.

 

Log’lanacak bilgiler file system tarafında ya da database’de kaydedilebilmektedir.

DBLog adında bir database oluşturalım ve Log kayıtlarını tutacağımız Log adında aşağıda olduğu gibi bir tablo yaratalım

CREATE TABLE [dbo].[Log] (
    [Id] [int] IDENTITY (1, 1) NOT NULL,
    [Date] [datetime] NOT NULL,
    [Thread] [varchar] (255) NOT NULL,
    [Level] [varchar] (50) NOT NULL,
    [Logger] [varchar] (255) NOT NULL,
    [Message] [varchar] (4000) NOT NULL,
    [Exception] [varchar] (2000) NULL
)

 

Uygulama içerisinde App.cofig ya da Web.config sayfalarının içerişini aşağıda olduğu gibi yapıp sadece connectionstring’ini değiştirmeniz yeterli olacaktır.

<?xmlversion="1.0"encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,
Log4net"/>
  </configSections>
  <log4net>
    <root>
      <levelvalue="DEBUG" />
      <appender-refref="ADONetAppender" />
    </root>
    <appendername="ADONetAppender"type="log4net.Appender.ADONetAppender">
      <bufferSizevalue="100" />
      <connectionTypevalue="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionStringvalue="server=serveradi; database=databaseadi;trusted_connection=true;" />
      <commandTextvalue="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
      <parameter>
        <parameterNamevalue="@log_date"/>
        <dbTypevalue="DateTime"/>
        <layouttype="log4net.Layout.RawTimeStampLayout"/>
      </parameter>
      <parameter>
        <parameterNamevalue="@thread"/>
        <dbTypevalue="String"/>
        <sizevalue="255"/>
        <layouttype="log4net.Layout.PatternLayout">
          <conversionPatternvalue="%thread"/>
        </layout>
      </parameter>
      <parameter>
        <parameterNamevalue="@log_level"/>
        <dbTypevalue="String"/>
        <sizevalue="50"/>
        <layouttype="log4net.Layout.PatternLayout">
          <conversionPatternvalue="%level"/>
        </layout>
      </parameter>
      <parameter>
        <parameterNamevalue="@logger"/>
        <dbTypevalue="String"/>
        <sizevalue="255"/>
        <layouttype="log4net.Layout.PatternLayout">
          <conversionPatternvalue="%logger"/>
        </layout>
      </parameter>
      <parameter>
        <parameterNamevalue="@message"/>
        <dbTypevalue="String"/>
        <sizevalue="4000"/>
        <layouttype="log4net.Layout.PatternLayout">
          <conversionPatternvalue="%message"/>
        </layout>
      </parameter>
      <parameter>
        <parameterNamevalue="@exception"/>
        <dbTypevalue="String"/>
        <sizevalue="2000"/>
        <layouttype="log4net.Layout.ExceptionLayout"/>
      </parameter>
    </appender>
  </log4net>
</configuration>

CodeBehind tarafında ki kodlar ise şu şekilde olacaktır

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.
MethodBase.GetCurrentMethod().DeclaringType);
        private void button1_Click(object sender, EventArgs e)
        {
            log4net.Config.XmlConfigurator.Configure();
            log.Debug("log Debug");
            log.Info("log Info");
            log.Warn("log Warn");
            log.Error("log Error");
            log.Fatal("log Fatal");
        }

  

Bu işlemler sonrasında database’de ki tabloya kayıtlar insert olmuş olacaktır.

 

Add comment