C# Sitecore 500错误日志记录/警报 问题
目前,我正在寻找一个定制的500错误页面,以及记录和提醒一个web主机关于被击中的条件(什么URL、堆栈跟踪、时间戳等) 我尝试在系统配置下定义自定义http错误,但没有命中错误页面。 我能够处理404及其相关错误(layoutnotfound) 问题: 我应该拦截global.asax中的上下文来处理500个错误并返回一个自定义页面吗?Sitecore是否有其他方法来实现我所寻找的目标 主要是,我正在寻找使用Sitecore记录/提醒500个错误的最佳实践C# Sitecore 500错误日志记录/警报 问题,c#,logging,sitecore,C#,Logging,Sitecore,目前,我正在寻找一个定制的500错误页面,以及记录和提醒一个web主机关于被击中的条件(什么URL、堆栈跟踪、时间戳等) 我尝试在系统配置下定义自定义http错误,但没有命中错误页面。 我能够处理404及其相关错误(layoutnotfound) 问题: 我应该拦截global.asax中的上下文来处理500个错误并返回一个自定义页面吗?Sitecore是否有其他方法来实现我所寻找的目标 主要是,我正在寻找使用Sitecore记录/提醒500个错误的最佳实践 是一篇关于在Sitecore中使用它
是一篇关于在Sitecore中使用它的文章。Elmah很棒,做得很好。您还可以使用来记录异常。您只需在global.asax中添加一个application_error方法,就可以跟踪发生的所有错误。您还可以添加不同的附加器,并将消息记录在日志文件、数据库中,然后通过电子邮件发送给它们 以下是记录错误的代码,包括一些附加信息,如url和当前sitecore项目:
private static readonly ILog log = LogManager.GetLogger(typeof(Global));
protected void Application_Error(object sender, EventArgs e)
{
if (Context != null)
{
Exception error = Context.Server.GetLastError().GetBaseException();
log.Fatal(
GetErrorMessage(), error);
}
}
private string GetErrorMessage()
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("Application_Error: Unhandled exception has been occured.");
try
{
sb.AppendLine("Current Request: " + Context.Request.RawUrl);
Sitecore.Data.Items.Item currentItem = Sitecore.Context.Item;
if (currentItem != null)
sb.AppendLine(String.Format("Current Item ({0}): {1}", currentItem.ID, currentItem.Paths.FullPath));
if (Sitecore.Context.Database != null)
sb.AppendLine("Current Database: " + Sitecore.Context.Database.Name);
}
catch { } // in no way should we prevent the site from logging the error
return sb.ToString();
}
如果你想要一个简单的解决方案,我建议你选择Elmah。如果你想有更多的控制和更多的日志选项,你应该使用一个定制的log4net解决方案
我尝试定义自定义http错误
在系统配置下,但
未命中错误页。我能
处理404及其相关错误
(layoutnotfound)
在这一点上…请注意,在本地访问时,自定义错误的行为会有所不同。此外,默认情况下,这些页面需要使用物理文件(而不是sitecore页面)。当返回超过200的状态代码时,您需要了解IIS的行为,以及它如何依赖于web.config和(如果在集成模式下运行)部分中的配置。特别是,请参见下面第一个链接的一半的流程图
http://www.iis.net/ConfigReference/system.webServer/httpErrors
您可能还希望将RequestErrors.UseServerSideRedirect设置更改为“true”,以便在不重定向的情况下提供更好的http响应。我对此进行了研究。我想知道是否有一种方法可以做到这一点,而不必担心他们的代码。只需写入日志文件/通过电子邮件向相关开发人员发送警报“担心他们的代码”是什么意思?它基本上是一个临时解决方案,添加了一些web.config。超级简单。也就是说,项目的一位主管不喜欢这个想法,这是他的反应。只是想想出一个会被批准的解决方案。和他讨论了这件事,并改变了他对这个问题的看法。我们正在尝试Elmah。最终使用它提供更深入的电子邮件报告,并允许那些希望关注错误但不让他们在电子邮件中喧哗的人访问RSS提要。谢谢你的建议