How to configure or setup Log4Net with ASP.NET ( included MVC) C# on Visual Studio 2012 ~ ~

Willie Cheng picture Willie Cheng · Mar 31, 2016 · Viewed 41.8k times · Source

I want to record software process logs to files. Rather than make my own log system, I am trying to use Log4Net with ASP.NET MVC, but I have run into problems setting it up in Visual Studio 2015, like:

  1. How to setup web.config / Global.asax page?

  2. How to install components in VS 2012 ~?

  3. How to use it in my *.cs file?

What are the steps to properly configure Log4Net With ASP.NET MVC C# in Visual Studio 2015?

I also wrote a Q&A to set it up for ASP.NET WebForms, see How to use Log4net from Nuget with Visual Studio platform in the ASP.NET Web Form (Easy method).

Answer

Willie Cheng picture Willie Cheng · Mar 31, 2016

Step1: To use the Nuget to get the log4net package:

enter image description here

Step2: tell log4net to initialize itself from the XML configuration (Web.config), by adding this call in the Global.asax.cs file under Application_Start():

log4net.Config.XmlConfigurator.Configure();

enter image description here

Step3: add the configuration section in Web.config between tag <configSections>...</configSections>:

  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

enter image description here

Step4: Insert the actual log4net configuration <log4net>...</log4net> (Within <configuration>...</configuration> but after the </configSections> tag) , see Apache log4net™ Config Examples for more examples:

<log4net debug="true">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="logs\log.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="100KB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>

enter image description here

Now you're ready to make calls to an ILog to write actual log statements to the configured appender(s):

ILog log = log4net.LogManager.GetLogger(typeof(HomeController));      

public ActionResult Index()
{
    log.Debug("Debug message");
    log.Warn("Warn message");
    log.Error("Error message");
    log.Fatal("Fatal message");
    ViewBag.Title = "Home Page";
    return View();
}

enter image description here