Activity Logging by Log4Net in MVC 5

How To Logging Errors by Log4Net in ASP.NET MVC 5?

How To Use Log4Net In MVC 5 to Log Error?

What do you means by Logging?
Logging is the act of keeping an application logs.
A logfile is a file that records either event that occurs in your applications when runs.

Stayed Informed - 15 Best ASP.Net MVC Examples
Table of Contents -
1.     Create Table in SQL Server
2.     Install the Log4Net reference
3.     Log4Net Configuration Section Handler
4.     log4net AdoNet Appender
5.     Application connection Strings
6.     Check packages
7.     CREATE LogManager class
8.     Configure log4net in the Application_Start method in MVC web app

Create Table in SQL Server
CREATE TABLE [DBO].[LOG4NET] (
            [LOGID] [INT] IDENTITY (1, 1) NOT NULL ,
            [DATE] [DATETIME] NOT NULL ,
            [THREAD] [VARCHAR] (1000) NOT NULL ,
            [LEVEL] [VARCHAR] (55) NOT NULL ,
            [LOGGER] [NVARCHAR] (MAX) NOT NULL ,
            [MESSAGE] [NVARCHAR] (MAX) NOT NULL ,
            [EXCEPTION] [NVARCHAR] (MAX) NOT NULL
) ON [PRIMARY]

Now, we first Install the Log4Net reference in web portal and configure the below steps to achieve logging the application errors and information also.

Steps 1 - Log4Net Configuration Section Handler
///Web.config
///Steps 1 - Log4Net Configuration Section Handler.
<configSections>
  <!-- For logging info -->
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>


Steps 2 - log4net AdoNet Appender
///Web.config
///Steps 2 -log4net AdoNet Appender
<log4net>
  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    <bufferSize value="1" />
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <connectionStringName value="DBConnection" />
    <commandText value="INSERT INTO AppLog ([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>
  <root>
    <level value="ALL" />
    <appender-ref ref="AdoNetAppender" />
  </root>
</log4net>

Steps 3 - Application connection Strings
///Web.config
///Steps 3 - Application connectionStrings.
<connectionStrings>
  <add name="DBConnection" connectionString="Data Source=localserver;Initial Catalog=demoDBName;uid=sa;pwd=123@123;" providerName="System.Data.SqlClient" />
</connectionStrings>

Steps 4 - Check packages
///package.config
///Steps 4 - Check packages.
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="log4net" version="2.0.5" targetFramework="net45" />
</packages>

Steps 4 – CREATE LogManager class
///Steps 4 - LogManager class.
/// <summary>
/// Log manager class handle application level log.
/// We have two types of logging, for on-premises environment we have plain text file for log and for cloud we have database for log.
/// </summary>
public class LogManager
{
    #region private property

    public static log4net.ILog Log { get; set; }

    #endregion

    #region public members

    static LogManager()
    {
        Log = log4net.LogManager.GetLogger(typeof(LogManager));
    }

    public static void Error(object msg)
    {
        Log.Error(msg);
    }

    public static void Error(object msg, Exception ex)
    {
        Log.Error(msg, ex);
    }

    public static void Error(Exception ex)
    {
        Log.Error(ex.Message, ex);
    }

    public static void Info(object msg)
    {
        Log.Info(msg);
    }

    #endregion
}


Steps 5 - Configure log4net in the Application_Start method in MVC web app.
//Global.asax
///Steps 5 - Configure log4net in the Application_Start method in mvc apps.
protected void Application_Start()
{
    log4net.Config.XmlConfigurator.Configure();
}


References –

I hope you are enjoying with this post! Please share with you friends. Thank you so much!


ANIL SINGH

Anil Singh is an author, tech blogger, and software programmer. Book writing, tech blogging is something do extra and Anil love doing it. For more detail, kindly refer to this link..

My Tech Blog - https://www.code-sample.com/
My Books - Book 1 and Book 2

www.code-sample.com/. Powered by Blogger.
^