Reputation: 1
I have perform all the possible step as configuration in web.config, manage global.aspx page and so on but record not stored in database table. I have a contoller named Account controller when we enter username="sameer" and password is="singh123" but i entered wrong password i want to save this error log in database
<logger name="SMSBA">
<appender-ref ref="ADONetAppender" />
</logger>
<param name="File" value="log-file.txt" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="SMSBA" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=SMSBA;" providerName="System.Data.SqlClient" />
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout" value="%thread" />
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout" value="%logger" />
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</parameter>
</appender>
<root>
<level value="All"/>
<appender-ref ref="AdoNetAppender_SqlServer"/>
</root>
this is web.config file
public class MvcApplication : NinjectHttpApplication
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new log4netExceptionFilter());
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Account", action = "LogOn", id = UrlParameter.Optional } // Parameter defaults
);
}
protected override void OnApplicationStarted()
{
log4net.Config.XmlConfigurator.Configure();
log4net.ILog log = log4net.LogManager.GetLogger(this.GetType());
log.Info("stuff");
log.Info("stuff");
log.Debug("log Debug");
log.Info("log Info");
log.Warn("log Warn");
log.Error("log Error");
log.Fatal("log Fatal");
SMSBAContextInitializer.Init();
const string userName = "Administrator";
if (Membership.GetUser(userName) == null)
{
Membership.CreateUser(userName, "test##123");
}
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override IKernel CreateKernel()
{
var modules = new INinjectModule[]
{
new ServiceModule()
};
return new StandardKernel(modules);
}
internal class ServiceModule : NinjectModule
{
public override void Load()
{
Bind<IFormsAuthenticationService>().To<FormsAuthenticationService>();
Bind<IMembershipService>().To<AccountMembershipService>();
Bind<MembershipProvider>().ToConstant(Membership.Provider);
Bind<IDepartmentRepository>().To<DepartmentRepository>();
Bind<IPersonnelRepository>().To<PersonnelRepository>();
Bind<IPersonnelTitleRepository>().To<PersonnelTitleRepository>();
Bind<IProcessInputRepository>().To<ProcessInputRepository>();
Bind<ILoggingService>().To<Logging>();
}
}
}
this is global .asax file
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
try
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Department");
}
}
else
{
_loggingService.Log("Password changed for user " + model.UserName);
// AddError("The user name or password provided is incorrect.");
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
}
catch (Exception ex)
{
if (Logger.IsErrorEnabled)
{
AddError(ex.Message);
Logger.Error("login error : " + ex.Message);
}
}
return View(model);
}
this is controller code
Upvotes: 0
Views: 1092
Reputation: 68440
Not sure what could be happening without more information but I'll give you an advice about how to troubleshoot
On web.config add the following lines
<!--Enables log4net internal debugging-->
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<!--Sets an output file for the internal debugging. Without this,
it outpusts to the console-->
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\tmp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
Upvotes: 2