Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Sitecore 500错误日志记录/警报 问题_C#_Logging_Sitecore - Fatal编程技术网

C# Sitecore 500错误日志记录/警报 问题

C# Sitecore 500错误日志记录/警报 问题,c#,logging,sitecore,C#,Logging,Sitecore,目前,我正在寻找一个定制的500错误页面,以及记录和提醒一个web主机关于被击中的条件(什么URL、堆栈跟踪、时间戳等) 我尝试在系统配置下定义自定义http错误,但没有命中错误页面。 我能够处理404及其相关错误(layoutnotfound) 问题: 我应该拦截global.asax中的上下文来处理500个错误并返回一个自定义页面吗?Sitecore是否有其他方法来实现我所寻找的目标 主要是,我正在寻找使用Sitecore记录/提醒500个错误的最佳实践 是一篇关于在Sitecore中使用它

目前,我正在寻找一个定制的500错误页面,以及记录和提醒一个web主机关于被击中的条件(什么URL、堆栈跟踪、时间戳等)

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

问题: 我应该拦截global.asax中的上下文来处理500个错误并返回一个自定义页面吗?Sitecore是否有其他方法来实现我所寻找的目标

主要是,我正在寻找使用Sitecore记录/提醒500个错误的最佳实践


是一篇关于在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提要。谢谢你的建议