asp.net-mvc
लॉग करने में त्रुटि
खोज…
सरल गुण
using System;
using System.Web;
using System.Web.Mvc;
namespace Example.SDK.Filters
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class CustomErrorHandlerFilter : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
// RouteDate is useful for retrieving info like controller, action or other route values
string controllerName = filterContext.RouteData.Values["controller"].ToString();
string actionName = filterContext.RouteData.Values["action"].ToString();
string exception = filterContext.Exception.ToString(); // Full exception stack
string message = filterContext.Exception.Message; // Message given by the exception
// Log the exception within database
LogExtensions.Insert(exception.ToString(), message, controllerName + "." + actionName);
base.OnException(filterContext);
}
}
}
फिर इसे FilterConfig.cs
में सेट करें
filters.Add(new CustomErrorHandlerFilter());
कस्टम त्रुटि पृष्ठ वापस करना
public ActionResult Details( string product)
{
....
if (productNotFound) {
// http://www.eidias.com/blog/2014/7/2/mvc-custom-error-pages
Response.Clear();
Response.TrySkipIisCustomErrors = true;
Response.Write(product + " product not exists");
Response.StatusCode = (int)HttpStatusCode.NotFound;
Response.End();
return null;
}
}
ASP.Net MVC में कस्टम ErrorLogger बनाएँ
चरण 1: कस्टम त्रुटि लॉगिंग फ़िल्टर बनाना जो पाठ फ़ाइलों के अनुसार त्रुटियां लिखेंगे।
public class ErrorLogger : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
string strLogText = "";
Exception ex = filterContext.Exception;
filterContext.ExceptionHandled = true;
var objClass = filterContext;
strLogText += "Message ---\n{0}" + ex.Message;
if (ex.Source == ".Net SqlClient Data Provider")
{
strLogText += Environment.NewLine + "SqlClient Error ---\n{0}" + "Check Sql Error";
}
else if (ex.Source == "System.Web.Mvc")
{
strLogText += Environment.NewLine + ".Net Error ---\n{0}" + "Check MVC Code For Error";
}
else if (filterContext.HttpContext.Request.IsAjaxRequest() == true)
{
strLogText += Environment.NewLine + ".Net Error ---\n{0}" + "Check MVC Ajax Code For Error";
}
strLogText += Environment.NewLine + "Source ---\n{0}" + ex.Source;
strLogText += Environment.NewLine + "StackTrace ---\n{0}" + ex.StackTrace;
strLogText += Environment.NewLine + "TargetSite ---\n{0}" + ex.TargetSite;
if (ex.InnerException != null)
{
strLogText += Environment.NewLine + "Inner Exception is {0}" + ex.InnerException;//error prone
}
if (ex.HelpLink != null)
{
strLogText += Environment.NewLine + "HelpLink ---\n{0}" + ex.HelpLink;//error prone
}
StreamWriter log;
string timestamp = DateTime.Now.ToString("d-MMMM-yyyy", new CultureInfo("en-GB"));
string error_folder = ConfigurationManager.AppSettings["ErrorLogPath"].ToString();
if (!System.IO.Directory.Exists(error_folder))
{
System.IO.Directory.CreateDirectory(error_folder);
}
if (!File.Exists(String.Format(@"{0}\Log_{1}.txt", error_folder, timestamp)))
{
log = new StreamWriter(String.Format(@"{0}\Log_{1}.txt", error_folder, timestamp));
}
else
{
log = File.AppendText(String.Format(@"{0}\Log_{1}.txt", error_folder, timestamp));
}
var controllerName = (string)filterContext.RouteData.Values["controller"];
var actionName = (string)filterContext.RouteData.Values["action"];
// Write to the file:
log.WriteLine(Environment.NewLine + DateTime.Now);
log.WriteLine("------------------------------------------------------------------------------------------------");
log.WriteLine("Controller Name :- " + controllerName);
log.WriteLine("Action Method Name :- " + actionName);
log.WriteLine("------------------------------------------------------------------------------------------------");
log.WriteLine(objClass);
log.WriteLine(strLogText);
log.WriteLine();
// Close the stream:
log.Close();
filterContext.HttpContext.Session.Abandon();
filterContext.Result = new RedirectToRouteResult
(new RouteValueDictionary
{
{"controller", "Errorview"}, {"action", "Error"}
});
}
}
चरण 2: सर्वर या स्थानीय ड्राइव पर भौतिक पथ जोड़ना जहां पाठ फ़ाइल संग्रहीत की जाएगी
<add key="ErrorLogPath" value="C:\ErrorLog\DemoMVC\" />
चरण 3: त्रुटि के साथ Errorview नियंत्रक जोड़ना ActionMethod
चरण 4: Error.cshtml व्यू को जोड़ना और व्यू पर कस्टम त्रुटि संदेश प्रदर्शित करना
चरण 5: FilterConfig वर्ग में ErrorLogger फ़िल्टर पंजीकृत करें
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new ErrorLogger());
}
}
चरण 6: Global.asax में FilterConfig को पंजीकृत करें
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow