Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

How to Use Log4Net In MVC to Track Error

0.00/5 (No votes)
1 Nov 2015 1  
This tip is to describe how to track error using LOG4Net in MVC project

Introduction

LOG4NET

Before showing what Log4Net is, I would like to explain what logging actually is.

Background

Logging

In computing, a logfile is a file that records either events that occur in an operating system or in a program or when a software runs.

Logging is the act of keeping a log.

Or we can say, logging is a method of tracking/monitoring what is going on when an application is running. Log records will be the most needed items when something goes wrong in your application.

Now I am explaing Log4Net.

LOG4NET

Log4net is an open-source library that allows or helps the .NET applications to trace the details of the errors that have occurred in a project.

Now I will explain how we should use Log4Net in our MVC project to track errors.

Step 1

Create a new MVC project.

Step 2

Go to the tools and make the following changes as in the picture shown:

Step 3

Click on the Manage NuGet Package Manager and then search for Log4Net.

Step 4

Install Log4Net.

Step 5

Step 6

Now expand the assembly and you will see the Log4Net.

As we have successfully imported Log4Net, we will now use it.

So, create a Home controller with the following Action method.

Using the Code

public class HomeController : Controller  
{  
   log4net.ILog logger = log4net.LogManager.GetLogger(typeof(HomeController));  //Declaring Log4Net  
   public ActionResult Index()  
   {  
      try  
      {  
         int x, y, z;  
         x = 5; y = 0;  
         z = x / y;  
      }  
      catch(Exception ex)  
      {  
         logger.Error(ex.ToString());  
      }  
      return View();  
   }     
} 

Since this method has an error because I am trying to divide it by zero, it will raise an error. So I will track the error.

For this, we need to do some setting in web.config. Go to Web.config and paste in the following things.

Under <configurations> in web.config, write the following code:

<configSections>  
<section name="log4net" 
	type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />  
</configSections>  
   
<log4net debug="false">  
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">  
<param name="File" value="C:\test\test.log" />  
<!--<param name="AppendToFile" value="true"/>-->  
<layout type="log4net.Layout.PatternLayout">  
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />  
</layout>  
</appender>  
   
<root>  
<level value="All" />  
<appender-ref ref="LogFileAppender" />  
</root>  
</log4net> 

Here, I am using the image for a better understanding.

Now I am explaining the key concepts.

APPENDER: The <appender /> element specifies the name and logger type. It specifies where the information will be logged, how it will be logged and under what circumstances the information will be logged. You can check the various types of appenders in the following link: http://logging.apache.org/log4net/release/config-examples.html

  • param name: Specifies the file name and path where the log will be saved. In this case, it is "test.log".
  • layout: The Layout element tells Log4Net how each log line should look like.
  • Root: You need to have one root section to house your top-level logger references. These are the loggers that inherit information from your base logger (root).

Now run the project with the Index action method and Home controller and check the log file in C\Test\Test.log. You will get the details of the exception.

Since I run it multiple times, it is showing the same error multiple times with the date and time. So in this way, we can use this Log4Net to track errors in a realistic scenario.

Points of Interest

I have a lot of interest in learning new technologies and sharing new code.

History

  • 1st November, 2015: Initial version

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here