Sitecore 500错误记录/警报

时间:2011-05-13 18:55:49

标签: c# logging sitecore

问题

目前,我正在寻求提供自定义500错误页面,以及记录并提醒网站管理员有关所遇到的情况(什么URL,堆栈跟踪,时间戳等)。

我在系统配置下尝试定义自定义http错误,但错误页面没有被点击。 我能够处理404s及其相关错误(layoutnotfound)。

问题

我应该拦截global.asax中的上下文来处理500个错误并返回自定义页面吗? Sitecore有另一种方法可以实现我正在寻找的东西吗?

主要是,我正在寻找使用Sitecore

记录500个错误的最佳做法

3 个答案:

答案 0 :(得分:5)

尝试使用ELMAH

Here是一篇关于将其与Sitecore一起使用的文章。

答案 1 :(得分:5)

Elmah很棒,做得很好。您还可以使用log4net来记录异常。您所做的只是在global.asax中添加application_error方法,您可以跟踪发生的所有错误。您还可以添加不同的appender,并可以在日志文件,数据库和电子邮件中记录消息。

以下是记录错误的代码,并包含一些其他信息,如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解决方案。

答案 2 :(得分:0)

  

我尝试定义自定义http错误   在系统配置下,但是   错误页面没有被击中。我能够   处理404s及其相关错误   (layoutnotfound)。

在那一点上......请注意,本地访问时自定义错误的行为会有所不同。此外,默认情况下,您需要为这些页面使用物理文件(而不是sitecore页面)。返回超过200的状态代码时,您需要了解IIS行为,以及它如何依赖于web.config中的配置和(如果在集成模式下运行)该部分。特别是,请参阅下面第一个链接中间的流程图。

http://learn.iis.net/page.aspx/267/how-to-use-http-detailed-errors-in-iis-70/ http://www.iis.net/ConfigReference/system.webServer/httpErrors http://msdn.microsoft.com/en-us/library/ms689487(v=VS.90).aspx

您可能还希望将RequestErrors.UseServerSideRedirect设置更改为“true”,以便在不重定向的情况下提供更好的http响应。