Autofac has log4net Integration Module called LoggingModule.
However, I register Logger to ILog manually without using LoggingModule, and it seems working fine.
ILog log = LogManager.GetLogger("Logger");
builder.RegisterInstance(log).As<ILog>().SingleInstance();
My question is - what is the disadvantage/side effect of using above approach instead of using LoggingModule.
web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="mylogfile.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
</configuration>
Global.asax.cs
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace DemoLog4NetAuftofac
{
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
ILog log = LogManager.GetLogger("Logger");
builder.RegisterInstance(log).As<ILog>().SingleInstance();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
}
HomeController
namespace DemoLog4NetAuftofac.Controllers
{
public class HomeController : Controller
{
public HomeController(ILog log)
{
log.Debug("Debug application");
log.Error("Error application");
log.Info("Info application");
}
}
}
Version
<package id="Autofac" version="3.4.0" targetFramework="net45" />
<package id="Autofac.Mvc5" version="3.3.4" targetFramework="net45" />
<package id="log4net" version="2.0.3" targetFramework="net45" />