You may have read several articles on how to use log4net; however, this article explains how you can use it without having to initialize several times.
Log4Net is a framework for implementing logging mechanisms. It is an open source framework.
Log4net provides a simple mechanism for logging information to a variety of sources. Information is logged via one or more loggers. These loggers are provided at the below levels of logging:
- Debug
- Information
- Warnings
- Error
- Fatal
Now let’s begin with implementation.
Add log4net Package
For this, you need to install log4net from NuGet Package Manager to your ASP.NET MVC project as per the below screen.
Add Global.asax for loading log4net configuration
Once installation is done, you need to add the below code in Application_Start() of Global.asax
- log4net.Config.XmlConfigurator.Configure();
Add log4net in config file
No,w open web.config and enter the following details.
- <configSections>
- <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
- </configSections>
-
- t;log4net>
- <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
- <file value="C:\Temp\nSightsLog.log" />
- <appendToFile value="true" />
- <maximumFileSize value="500KB" />
- <maxSizeRollBackups value="2" />
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date %level %logger - %message%newline" />
- </layout>
- </appender>
- <root>
- <level value="All" />
- <appender-ref ref="RollingFile" />
- </root>
- </log4net>
Implementing in specific file for accessing throughout application
Add a class Log.cs in the Utilities folder.
Now, in the constructor of this class, instantiate logs for monitoring and debugger loggers.
- private Log()
- {
- monitoringLogger = LogManager.GetLogger("MonitoringLogger");
- debugLogger = LogManager.GetLogger("DebugLogger");
- }
Here, you need to create Debug(), Error(), Info(), Warn(), Fatal() methods which will call respective methods from Log4 net.
Below is a sample.
- public class Log
- {
- private static readonly Log _instance = new Log();
- protected ILog monitoringLogger;
- protected static ILog debugLogger;
-
- private Log()
- {
- monitoringLogger = LogManager.GetLogger("MonitoringLogger");
- debugLogger = LogManager.GetLogger("DebugLogger");
- }
-
-
-
-
-
-
-
- public static void Debug(string message)
- {
- debugLogger.Debug(message);
- }
-
-
-
-
-
-
-
- public static void Debug(string message, System.Exception exception)
- {
- debugLogger.Debug(message, exception);
- }
-
-
-
-
-
-
- public static void Info(string message)
- {
- _instance.monitoringLogger.Info(message);
- }
-
-
-
-
-
-
-
- public static void Info(string message, System.Exception exception)
- {
- _instance.monitoringLogger.Info(message, exception);
- }
-
-
-
-
-
- public static void Warn(string message)
- {
- _instance.monitoringLogger.Warn(message);
- }
-
-
-
-
-
-
- public static void Warn(string message, System.Exception exception)
- {
- _instance.monitoringLogger.Warn(message, exception);
- }
-
-
-
-
-
- public static void Error(string message)
- {
- _instance.monitoringLogger.Error(message);
- }
-
-
-
-
-
-
- public static void Error(string message, System.Exception exception)
- {
- _instance.monitoringLogger.Error(message, exception);
- }
-
-
-
-
-
-
- public static void Fatal(string message)
- {
- _instance.monitoringLogger.Fatal(message);
- }
-
-
-
-
-
-
- public static void Fatal(string message, System.Exception exception)
- {
- _instance.monitoringLogger.Fatal(message, exception);
- }
-
-
- }
Now, you need to call the logger class that logs directly into your action method.
- public ActionResult Login()
- {
-
- Log.Info("Login-page started...");
-
-
- return View();
- }