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!