. .

log4net in mvc3

log4net may be used for .net appliction to server for logging.

This post will guide you a quick & dirty way to setup log4net for your project.

  • Add log4net.dll into reference
  • Setup Log4Net.config in your project root
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    <log4net>
      <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
        <file value="c:\Logs\logs-" />
        <datePattern value="dd.MM.yyyy'.log'" />
        <staticLogFileName value="false" />
        <appendToFile value="true" />
        <rollingStyle value="Composite" />
        <maxSizeRollBackups value="-1" />
        <maximumFileSize value="5MB" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern
          value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <acceptOnMatch value="true" />
          <levelMin value="DEBUG" />
          <levelMax value="FATAL" />
        </filter>
      </appender>
    
      <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingLogFileAppender" />
      </root>
    </log4net>
    </configuration>
  • In AssemblyInfo.cs (under Properties folder), add
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
  • In your class, add following in class definition,
    private static readonly ILog log = LogManager.GetLogger(typeof(HomeController));

    and in your method, add

    log.Debug("This is a DEBUG level message");
    log.Info("This is for information only");
    

That’s should be work fine now. In case for any problem, please check your IIS could write to the file directory.