ASP.NET MVC + log4net – Logging Into Database

ASP.NET MVC + log4net – Logging Into Database

 
   SQL – Create Log Table
 
   CREATE TABLE [dbo].[Log]
   (
     [ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL PRIMARY KEY,
     [Date] [datetime] NULL,
     [Thread] [nvarchar](max) NULL,
     [Level] [nvarchar](max) NULL,
     [Logger] [nvarchar](max) NULL,
     [Message] [nvarchar](max) NULL,
     [Exception] [nvarchar](max) NULL
   )
 
 
   web.conf
 
   <configuration>
 
     <configSections>
       … …
       <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
     </configSections>
 
     <log4net>
 
       <root>
         <level value="DEBUG" />
         <appender-ref ref="ADONetAppender" />
       </root>
 
       <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
 
         <bufferSize value="1" />
         <connectionType value="System.Data.SqlClient.SqlConnection,
                                                  System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
         <connectionString value="… …" />
         <commandText value="INSERT INTO [dbo].[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>
 
     </log4net>
 
     … …
 
   <configuration>
 
 
   C# – Global.asax.cs
 
   protected void Application_Start()
   {
     … …
 
     log4net.Config.XmlConfigurator.Configure();
   }
 
   C# – Code for Take Log
 
   logger.Debug("Message");
   logger.Info("Message");
   logger.Warn("Message");
   logger.Error("Message", new Exception("Exception Message"));
   logger.Fatal("Message", new Exception("Exception Message"));
 

Reference From Here.