/// <summary>	Constructor. </summary>
		/// <remarks>
		/// Logs to the given Elmah ErrorLog.  Only Error and Fatal are passed along to Elmah, while all other errors will be written to the
		/// wrapped logger.
		/// </remarks>
		/// <exception cref="ArgumentNullException">	Thrown when either the wrapped ILog or Elmah ErrorLog are null. </exception>
		/// <param name="log">	   	The underlying log to write to. </param>
		/// <param name="errorLog">	The error log. </param>
		public ElmahInterceptingLogger(ILog log, ErrorLog errorLog)
		{
			if (null == log) { throw new ArgumentNullException("log"); }
			if (null == errorLog) { throw new ArgumentNullException("errorLog"); }

			_log = log;
			_errorLog = errorLog;
		}
Exemple #2
0
 public ElmahLogWriter(ErrorLog log, ElmahLogLevels logLevels)
 {
     _log = log;
     _logLevels = logLevels ?? new ElmahLogLevels()
     {
         IsDebugEnabled = true,
         IsErrorEnabled = true,
         IsFatalEnabled = true,
         IsInfoEnabled = true,
         IsWarnEnabled = true
     };
 }
 public override void ActivateOptions()
 {
     base.ActivateOptions();
     _HostName = Environment.MachineName;
     try
     {
         this._ErrorLog = ErrorLog.GetDefault(HttpContext.Current);
     }
     catch (Exception ex)
     {
         this.ErrorHandler.Error("Could not create default ELMAH error log", ex);
     }
 }
		public void Init()
		{
			ErrorLog = new MemoryErrorLog(1);
			var loggingConfiguration = new LoggingConfiguration();
			var target = new ElmahTarget(ErrorLog)
			{
				Layout = new SimpleLayout("${level}-${message}"),
				GetCurrentDateTime = () => _now
			};

			loggingConfiguration.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, target));
			loggingConfiguration.AddTarget("Elmah", target);
			LogManager.Configuration = loggingConfiguration;
		}
Exemple #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ErrorLogEntry"/> class
        /// for a given unique error entry in an error log.
        /// </summary>
        public ErrorLogEntry(ErrorLog log, string id, Error error)
        {
            if (log == null)
                throw new ArgumentNullException("log");

            if (id == null)
                throw new ArgumentNullException("id");

            if (id.Length == 0)
                throw new ArgumentException(null, "id");

            if (error == null)
                throw new ArgumentNullException("error");

            _log = log;
            _id = id;
            _error = error;
        }
        public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
        {
            if (context == null)
                throw new ArgumentNullException("context");

            if (_result != null)
                throw new InvalidOperationException("An asynchronous operation is already pending.");

            HttpRequest request = context.Request;
            NameValueCollection query = request.QueryString;

            //
            // Limit the download by some maximum # of records?
            //

            _maxDownloadCount = Math.Max(0, Convert.ToInt32(query["limit"], CultureInfo.InvariantCulture));

            //
            // Determine the desired output format.
            //

            string format = Mask.EmptyString(query["format"], "csv").ToLower(CultureInfo.InvariantCulture);

            switch (format)
            {
                case "csv": _format = new CsvFormat(context); break;
                case "jsonp": _format = new JsonPaddingFormat(context); break;
                case "html-jsonp": _format = new JsonPaddingFormat(context, /* wrapped */ true); break;
                default:
                    throw new Exception("Request log format is not supported.");
            }

            Debug.Assert(_format != null);

            //
            // Emit format header, initialize and then fetch results.
            //

            context.Response.BufferOutput = false;
            _format.Header();

            AsyncResult result = _result = new AsyncResult(extraData);
            _log = ErrorLog.GetDefault(context);
            _pageIndex = 0;
            _lastBeatTime = DateTime.Now;
            _context = context;
            _callback = cb;
            _errorEntryList = new ArrayList(_pageSize);

            _log.BeginGetErrors(_pageIndex, _pageSize, _errorEntryList,
                new AsyncCallback(GetErrorsCallback), null);

            return result;
        }
        public void EndProcessRequest(IAsyncResult result)
        {
            if (result == null)
                throw new ArgumentNullException("result");

            if (result != _result)
                throw new ArgumentException(null, "result");

            _result = null;
            _log = null;
            _context = null;
            _callback = null;
            _errorEntryList = null;

            ((AsyncResult) result).End();
        }
Exemple #8
0
        public override void Execute()
        {
            WriteLiteral("\r\n");



            #line 8 "..\..\ErrorLogPage.cshtml"

            const int defaultPageSize = 15;
            const int maximumPageSize = 100;

            var basePageName = Request.ServerVariables["URL"];

            //
            // Get the page index and size parameters within their bounds.
            //

            var pageSize = Convert.ToInt32(Request.QueryString["size"], CultureInfo.InvariantCulture);
            pageSize = Math.Min(maximumPageSize, Math.Max(0, pageSize));

            if (pageSize == 0)
            {
                pageSize = defaultPageSize;
            }

            var pageIndex = Convert.ToInt32(Request.QueryString["page"], CultureInfo.InvariantCulture);
            pageIndex = Math.Max(1, pageIndex) - 1;

            //
            // Read the error records.
            //

            var log            = this.ErrorLog ?? ErrorLog.GetDefault(Context);
            var errorEntryList = new List <ErrorLogEntry>(pageSize);
            var totalCount     = log.GetErrors(pageIndex, pageSize, errorEntryList);

            //
            // Set the title of the page.
            //

            var hostName = Environment.MachineName;
            var title    = string.Format(@"Error log for {0} on {1} (Page #{2})",
                                         log.ApplicationName, hostName,
                                         (pageIndex + 1).ToString("N0"));

            Layout = new Elmah.MasterPage
            {
                Context       = Context, /* TODO Consider not requiring this */
                Title         = title,
                Footnote      = string.Format("This log is provided by the {0}.", log.Name),
                SpeedBarItems = new[]
                {
                    SpeedBar.RssFeed.Format(basePageName),
                    SpeedBar.RssDigestFeed.Format(basePageName),
                    SpeedBar.DownloadLog.Format(basePageName),
                    SpeedBar.Help,
                    SpeedBar.About.Format(basePageName),
                },
            };

            // If the application name matches the APPL_MD_PATH then its
            // of the form /LM/W3SVC/.../<name>. In this case, use only the
            // <name> part to reduce the noise. The full application name is
            // still made available through a tooltip.

            var simpleName = log.ApplicationName;

            if (string.Compare(simpleName, Request.ServerVariables["APPL_MD_PATH"],
                               true, CultureInfo.InvariantCulture) == 0)
            {
                var lastSlashIndex = simpleName.LastIndexOf('/');

                if (lastSlashIndex > 0)
                {
                    simpleName = simpleName.Substring(lastSlashIndex + 1);
                }
            }



            #line default
            #line hidden
            WriteLiteral("        <h1 id=\"PageTitle\">\r\n            Error Log for <span id=\"ApplicationName\"" +
                         " title=\"");



            #line 80 "..\..\ErrorLogPage.cshtml"
            Write(log.ApplicationName);


            #line default
            #line hidden
            WriteLiteral("\">");



            #line 80 "..\..\ErrorLogPage.cshtml"
            Write(simpleName);


            #line default
            #line hidden
            WriteLiteral(" on ");



            #line 80 "..\..\ErrorLogPage.cshtml"
            Write(hostName);


            #line default
            #line hidden
            WriteLiteral("</span>\r\n        </h1>\r\n        \r\n");



            #line 83 "..\..\ErrorLogPage.cshtml"
            if (errorEntryList.Count > 0)
            {
                // Write error number range displayed on this page and the
                // total available in the log, followed by stock
                // page sizes.

                var firstErrorNumber = pageIndex * pageSize + 1;
                var lastErrorNumber  = firstErrorNumber + errorEntryList.Count - 1;
                var totalPages       = (int)Math.Ceiling((double)totalCount / pageSize);

                // Write out a set of stock page size choices. Note that
                // selecting a stock page size re-starts the log
                // display from the first page to get the right paging.

                var stockSizes =
                    from sizes in new[]
                {
                    new[] { 10, 15, 20, 25, 30, 50, 100, },
                }
                from size in sizes.Index()
                let separator =
                    size.Key + 1 == sizes.Length
                    ? null
                    : size.Key + 2 == sizes.Length
                    ? " or "
                    : ", "
                    select LinkHere(basePageName, HtmlLinkType.Start, size.Value.ToString("N0"), 0, size.Value)
                    + separator;



            #line default
            #line hidden
                WriteLiteral("            <p>Errors ");



            #line 112 "..\..\ErrorLogPage.cshtml"
                Write(firstErrorNumber.ToString("N0"));


            #line default
            #line hidden
                WriteLiteral(" to ");



            #line 112 "..\..\ErrorLogPage.cshtml"
                Write(lastErrorNumber.ToString("N0"));


            #line default
            #line hidden
                WriteLiteral(" \r\n                of total ");



            #line 113 "..\..\ErrorLogPage.cshtml"
                Write(totalCount.ToString("N0"));


            #line default
            #line hidden
                WriteLiteral(" \r\n                (page ");



            #line 114 "..\..\ErrorLogPage.cshtml"
                Write((pageIndex + 1).ToString("N0"));


            #line default
            #line hidden
                WriteLiteral(" of ");



            #line 114 "..\..\ErrorLogPage.cshtml"
                Write(totalPages.ToString("N0"));


            #line default
            #line hidden
                WriteLiteral("). \r\n                Start with ");



            #line 115 "..\..\ErrorLogPage.cshtml"
                Write(Html(stockSizes.ToDelimitedString(string.Empty)));


            #line default
            #line hidden
                WriteLiteral(" errors per page.</p>\r\n");



            #line 116 "..\..\ErrorLogPage.cshtml"

                // Write out the main table to display the errors.



            #line default
            #line hidden
                WriteLiteral("            <div class=\"truncated-container\">\r\n                <a class=\"btn btn-" +
                             "danger\" href=\"");



            #line 120 "..\..\ErrorLogPage.cshtml"
                Write(basePageName);


            #line default
            #line hidden
                WriteLiteral("/truncate\">Truncate error log</a>\r\n            </div>\r\n");



            #line 122 "..\..\ErrorLogPage.cshtml"



            #line default
            #line hidden
                WriteLiteral(@"            <table id=""ErrorLog"" cellspacing=""0"" style=""border-collapse:collapse;"" class=""table table-condensed table-striped"">
                <tr>
                    <th class=""host-col"" style=""white-space:nowrap;"">Host</th>
                    <th class=""code-col"" style=""white-space:nowrap;"">Code</th>
                    <th class=""type-col"" style=""white-space:nowrap;"">Type</th>
                    <th class=""error-col"" style=""white-space:nowrap;"">Error</th>
                    <th class=""user-col"" style=""white-space:nowrap;"">User</th>
                    <th class=""time-col"" style=""white-space:nowrap;"">When</th>
                    <th class=""delete-col"" style=""white-space:nowrap;"">&nbsp;</th>
                </tr>

");



            #line 134 "..\..\ErrorLogPage.cshtml"
                foreach (var error in from item in errorEntryList.Index()
                         let e = item.Value.Error
                                 select new
                {
                    Index = item.Key,
                    item.Value.Id,
                    e.HostName,
                    e.StatusCode,
                    StatusDescription =
                        e.StatusCode > 0
                                          ? HttpStatus.FromCode(e.StatusCode).Reason
                                          : null,
                    e.Type,
                    HumaneType = ErrorDisplay.HumaneExceptionErrorType(e),
                    e.Message,
                    e.User,
                    When = FuzzyTime.FormatInEnglish(e.Time),
                    Iso8601Time = e.Time.ToString("o"),
                })
                {
            #line default
            #line hidden
                    WriteLiteral("                <tr class=\"");



            #line 154 "..\..\ErrorLogPage.cshtml"
                    Write(error.Index % 2 == 0 ? "even" : "odd");


            #line default
            #line hidden
                    WriteLiteral("\">\r\n                    \r\n                    <td class=\"host-col\" style=\"white-s" +
                                 "pace:nowrap;\">");



            #line 156 "..\..\ErrorLogPage.cshtml"
                    Write(error.HostName);


            #line default
            #line hidden
                    WriteLiteral("</td>\r\n                    <td class=\"code-col\" style=\"white-space:nowrap;\">\r\n");



            #line 158 "..\..\ErrorLogPage.cshtml"
                    if (!string.IsNullOrEmpty(error.StatusDescription))
                    {
            #line default
            #line hidden
                        WriteLiteral("                            <span title=\"");



            #line 160 "..\..\ErrorLogPage.cshtml"
                        Write(error.StatusDescription);


            #line default
            #line hidden
                        WriteLiteral("\">");



            #line 160 "..\..\ErrorLogPage.cshtml"
                        Write(error.StatusCode);


            #line default
            #line hidden
                        WriteLiteral("</span>\r\n");



            #line 161 "..\..\ErrorLogPage.cshtml"
                    }
                    else if (error.StatusCode != 0)
                    {
            #line default
            #line hidden

            #line 164 "..\..\ErrorLogPage.cshtml"
                        Write(error.StatusCode);


            #line default
            #line hidden

            #line 164 "..\..\ErrorLogPage.cshtml"
                    }


            #line default
            #line hidden
                    WriteLiteral("                    </td>\r\n                    <td class=\"type-col\" style=\"white-" +
                                 "space:nowrap;\"><span title=\"");



            #line 167 "..\..\ErrorLogPage.cshtml"
                    Write(error.Type);


            #line default
            #line hidden
                    WriteLiteral("\">");



            #line 167 "..\..\ErrorLogPage.cshtml"
                    Write(error.HumaneType);


            #line default
            #line hidden
                    WriteLiteral("</span></td>\r\n                    \r\n                    <td class=\"error-col\"><sp" +
                                 "an>");



            #line 169 "..\..\ErrorLogPage.cshtml"
                    Write(error.Message);


            #line default
            #line hidden
                    WriteLiteral("</span> \r\n                        <a href=\"");



            #line 170 "..\..\ErrorLogPage.cshtml"
                    Write(basePageName);


            #line default
            #line hidden
                    WriteLiteral("/detail?id=");



            #line 170 "..\..\ErrorLogPage.cshtml"
                    Write(error.Id);


            #line default
            #line hidden
                    WriteLiteral("\">Details&hellip;</a></td>\r\n                    \r\n                    <td class=\"" +
                                 "user-col\" style=\"white-space:nowrap;\">");



            #line 172 "..\..\ErrorLogPage.cshtml"
                    Write(error.User);


            #line default
            #line hidden
                    WriteLiteral("</td>\r\n                    <td class=\"time-col\" style=\"white-space:nowrap;\"><abbr" +
                                 " title=\"");



            #line 173 "..\..\ErrorLogPage.cshtml"
                    Write(error.Iso8601Time);


            #line default
            #line hidden
                    WriteLiteral("\">");



            #line 173 "..\..\ErrorLogPage.cshtml"
                    Write(error.When);


            #line default
            #line hidden
                    WriteLiteral("</abbr></td>\r\n                    <td class=\"delete-col\">\r\n                      " +
                                 "  <a class=\"btn btn-danger btn-delete\" href=\"");



            #line 175 "..\..\ErrorLogPage.cshtml"
                    Write(basePageName);


            #line default
            #line hidden
                    WriteLiteral("/delete?id=");



            #line 175 "..\..\ErrorLogPage.cshtml"
                    Write(error.Id);


            #line default
            #line hidden
                    WriteLiteral("\">x</a>\r\n                    </td>\r\n                </tr>\r\n");



            #line 178 "..\..\ErrorLogPage.cshtml"
                }


            #line default
            #line hidden
                WriteLiteral("            </table>\r\n");



            #line 180 "..\..\ErrorLogPage.cshtml"

                // Write out page navigation links.

                //
                // If not on the last page then render a link to the next page.
                //

                var nextPageIndex = pageIndex + 1;
                var moreErrors    = nextPageIndex * pageSize < totalCount;



            #line default
            #line hidden
                WriteLiteral("            <p>\r\n\r\n");



            #line 192 "..\..\ErrorLogPage.cshtml"
                if (moreErrors)
                {
            #line default
            #line hidden

            #line 194 "..\..\ErrorLogPage.cshtml"
                    Write(LinkHere(basePageName, HtmlLinkType.Next, "Next errors", nextPageIndex, pageSize));


            #line default
            #line hidden

            #line 194 "..\..\ErrorLogPage.cshtml"
                }


            #line default
            #line hidden


            #line 196 "..\..\ErrorLogPage.cshtml"
                if (pageIndex > 0 && totalCount > 0)
                {
                    if (moreErrors)
                    {
                        Write("; ");
                    }


            #line default
            #line hidden

            #line 201 "..\..\ErrorLogPage.cshtml"
                    Write(LinkHere(basePageName, HtmlLinkType.Start, "Back to first page", 0, pageSize));


            #line default
            #line hidden

            #line 201 "..\..\ErrorLogPage.cshtml"
                }


            #line default
            #line hidden
                WriteLiteral("\r\n            </p>\r\n");



            #line 205 "..\..\ErrorLogPage.cshtml"
            }
            else
            {
                // No errors found in the log, so display a corresponding
                // message.

                // It is possible that there are no error at the requested
                // page in the log (especially if it is not the first page).
                // However, if there are error in the log

                if (pageIndex > 0 && totalCount > 0)
                {
            #line default
            #line hidden
                    WriteLiteral("                <p>");



            #line 217 "..\..\ErrorLogPage.cshtml"
                    Write(LinkHere(basePageName, HtmlLinkType.Start, "Go to first page", 0, pageSize));


            #line default
            #line hidden
                    WriteLiteral(".</p>\r\n");



            #line 218 "..\..\ErrorLogPage.cshtml"
                }
                else
                {
            #line default
            #line hidden
                    WriteLiteral("                <p>No errors found.</p>\r\n");



            #line 222 "..\..\ErrorLogPage.cshtml"
                }
            }


            #line default
            #line hidden
            WriteLiteral("\r\n");


            WriteLiteral("\r\n");
        }
Exemple #9
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "application/xml";

            //
            // Get the last set of errors for this application.
            //

            const int            pageSize       = 15;
            List <ErrorLogEntry> errorEntryList = new List <ErrorLogEntry>(pageSize);
            ErrorLog             log            = ErrorLog.GetDefault(context);

            log.GetErrors(0, pageSize, errorEntryList);

            //
            // We'll be emitting RSS vesion 0.91.
            //

            RichSiteSummary rss = new RichSiteSummary();

            rss.version = "0.91";

            //
            // Set up the RSS channel.
            //

            Channel channel  = new Channel();
            string  hostName = Environment.TryGetMachineName(context);

            channel.title = "Error log of " + log.ApplicationName
                            + (hostName.Length > 0 ? " on " + hostName : null);
            channel.description = "Log of recent errors";
            channel.language    = "en";
            channel.link        = context.Request.Url.GetLeftPart(UriPartial.Authority) +
                                  context.Request.ServerVariables["URL"];

            rss.channel = channel;

            //
            // For each error, build a simple channel item. Only the title,
            // description, link and pubDate fields are populated.
            //

            channel.item = new Item[errorEntryList.Count];

            for (int index = 0; index < errorEntryList.Count; index++)
            {
                ErrorLogEntry errorEntry = (ErrorLogEntry)errorEntryList[index];
                Error         error      = errorEntry.Error;

                Item item = new Item();

                item.title       = error.Message;
                item.description = "An error of type " + error.Type + " occurred. " + error.Message;
                item.link        = channel.link + "/detail?id=" + HttpUtility.UrlEncode(errorEntry.Id);
                item.pubDate     = error.Time.ToUniversalTime().ToString("r");

                channel.item[index] = item;
            }

            //
            // Stream out the RSS XML.
            //

            context.Response.Write(XmlText.StripIllegalXmlCharacters(XmlSerializer.Serialize(rss)));
        }
Exemple #10
0
        /// <summary>
        /// Initializes a new instance of the
        /// <see cref="ErrorLogDataSourceAdapter"/> class with the default
        /// error log implementation.
        /// </summary>

        public ErrorLogDataSourceAdapter()
        {
            _log = ErrorLog.GetDefault(new HttpContextWrapper(HttpContext.Current));
        }
Exemple #11
0
        /// <summary>
        /// Gets the <see cref="ErrorLog"/> instance to which the module
        /// will log exceptions.
        /// </summary>

        protected virtual ErrorLog GetErrorLog(HttpContextBase context)
        {
            return(ErrorLog.GetDefault(context));
        }
Exemple #12
0
 public ElmahLogger()
 {
     _logger = ErrorLog.GetDefault(HttpContext.Current);
 }
Exemple #13
0
 public ElmahTarget(ErrorLog errorLog)
 {
     _errorLog = errorLog;
     LogLevelAsType = false;
 }
 public object GetService(Type serviceType)
 {
     return(serviceType == typeof(ErrorLog)
          ? ErrorLog.GetDefaultImpl(_context)
          : null);
 }
Exemple #15
0
 public ElmahTarget(ErrorLog errorLog)
 {
     _errorLog = errorLog;
 }
 public WindowsComputerManagement(ErrorLog Logger) 
 { 
     this.Logger = Logger;
 }
 /// <summary>
 /// ElmahLogger
 /// </summary>
 public ElmahLogger(LogLevel minLevel, ErrorLog errorLog)
 {
     this.minLevel = minLevel;
     this.errorLog = errorLog;
 }
Exemple #18
0
        private void Render()
        {
            Response.ContentType = "application/xml";

            ErrorLog log = ErrorLog.GetDefault(_context);

            //
            // We'll be emitting RSS vesion 0.91.
            //

            RichSiteSummary rss = new RichSiteSummary();

            rss.version = "0.91";

            //
            // Set up the RSS channel.
            //

            Channel channel  = new Channel();
            string  hostName = Environment.TryGetMachineName(_context);

            channel.title = "Daily digest of errors in "
                            + log.ApplicationName
                            + (hostName.Length > 0 ? " on " + hostName : null);
            channel.description = "Daily digest of application errors";
            channel.language    = "en";

            Uri baseUrl = new Uri(ErrorLogPageFactory.GetRequestUrl(_context).GetLeftPart(UriPartial.Authority) + Request.ServerVariables["URL"]);

            channel.link = baseUrl.ToString();

            rss.channel = channel;

            //
            // Build the channel items.
            //

            const int pageSize       = 30;
            const int maxPageLimit   = 30;
            ArrayList itemList       = new ArrayList(pageSize);
            ArrayList errorEntryList = new ArrayList(pageSize);

            //
            // Start with the first page of errors.
            //

            int pageIndex = 0;

            //
            // Initialize the running state.
            //

            DateTime       runningDay        = DateTime.MaxValue;
            int            runningErrorCount = 0;
            Item           item   = null;
            StringBuilder  sb     = new StringBuilder();
            HtmlTextWriter writer = new HtmlTextWriter(new StringWriter(sb));

            do
            {
                //
                // Get a logical page of recent errors and loop through them.
                //

                errorEntryList.Clear();
                log.GetErrors(pageIndex++, pageSize, errorEntryList);

                foreach (ErrorLogEntry entry in errorEntryList)
                {
                    Error    error = entry.Error;
                    DateTime time  = error.Time.ToUniversalTime();
                    DateTime day   = new DateTime(time.Year, time.Month, time.Day);

                    //
                    // If we're dealing with a new day then break out to a
                    // new channel item, finishing off the previous one.
                    //

                    if (day < runningDay)
                    {
                        if (runningErrorCount > 0)
                        {
                            RenderEnd(writer);
                            item.description = sb.ToString();
                            itemList.Add(item);
                        }

                        runningDay        = day;
                        runningErrorCount = 0;

                        if (itemList.Count == pageSize)
                        {
                            break;
                        }

                        item         = new Item();
                        item.pubDate = time.ToString("r");
                        item.title   = string.Format("Digest for {0} ({1})",
                                                     runningDay.ToString("yyyy-MM-dd"), runningDay.ToLongDateString());

                        sb.Length = 0;
                        RenderStart(writer);
                    }

                    RenderError(writer, entry, baseUrl);
                    runningErrorCount++;
                }
            }while (pageIndex < maxPageLimit && itemList.Count < pageSize && errorEntryList.Count > 0);

            if (runningErrorCount > 0)
            {
                RenderEnd(writer);
                item.description = sb.ToString();
                itemList.Add(item);
            }

            channel.item = (Item[])itemList.ToArray(typeof(Item));

            //
            // Stream out the RSS XML.
            //

            Response.Write(XmlText.StripIllegalXmlCharacters(XmlSerializer.Serialize(rss)));
        }
 /// <summary>
 /// Initializes a new instance of the 
 /// <see cref="ErrorLogDataSourceAdapter"/> class with the default
 /// error log implementation.
 /// </summary>
 public ErrorLogDataSourceAdapter()
 {
     _log = ErrorLog.GetDefault(HttpContext.Current);
 }
Exemple #20
0
        public override void Execute()
        {
            WriteLiteral("\r\n");



            #line 7 "..\..\ErrorDetailPage.cshtml"

            var basePageName = Request.ServerVariables["URL"];

            //
            // Retrieve the ID of the error to display and read it from
            // the store.
            //

            var errorId = Request.QueryString["id"] ?? string.Empty;

            if (errorId.Length == 0)
            {
                return;
            }

            var log        = this.ErrorLog ?? ErrorLog.GetDefault(Context);
            var errorEntry = log.GetError(errorId);

            //
            // Perhaps the error has been deleted from the store? Whatever
            // the reason, bail out silently.
            //

            if (errorEntry == null)
            {
                Response.Status = HttpStatus.NotFound.ToString();


            #line default
            #line hidden
                WriteLiteral("        <p>Error not found in log.</p>\r\n");



            #line 34 "..\..\ErrorDetailPage.cshtml"
                return;
            }

            var title = string.Format("Error: {0} [{1}]", errorEntry.Error.Type, errorEntry.Id);

            Layout = new Elmah.MasterPage
            {
                Context       = Context, /* TODO Consider not requiring this */
                Title         = title,
                Footnote      = string.Format("This log is provided by the {0}.", log.Name),
                SpeedBarItems = new[]
                {
                    SpeedBar.Home.Format(basePageName),
                    SpeedBar.Help,
                    SpeedBar.About.Format(basePageName),
                },
            };

            var error = errorEntry.Error;



            #line default
            #line hidden
            WriteLiteral("\r\n");



            WriteLiteral("\r\n\r\n<h1 id=\"PageTitle\">");



            #line 59 "..\..\ErrorDetailPage.cshtml"
            Write(error.Message);


            #line default
            #line hidden
            WriteLiteral("</h1>\r\n\r\n<p id=\"ErrorTitle\">");



            WriteLiteral("<span id=\"ErrorType\">");



            #line 62 "..\..\ErrorDetailPage.cshtml"
            Write(error.Type);


            #line default
            #line hidden
            WriteLiteral("</span>");



            WriteLiteral("<span id=\"ErrorTypeMessageSeparator\">: </span>");



            WriteLiteral("<span id=\"ErrorMessage\">");



            #line 64 "..\..\ErrorDetailPage.cshtml"
            Write(error.Message);


            #line default
            #line hidden
            WriteLiteral("</span></p>\r\n\r\n");



            WriteLiteral("\r\n\r\n");



            #line 74 "..\..\ErrorDetailPage.cshtml"
            if (error.Detail.Length != 0)
            {
            #line default
            #line hidden
                WriteLiteral("    <pre id=\"ErrorDetail\">");



            #line 76 "..\..\ErrorDetailPage.cshtml"
                Write(MarkupStackTrace(error.Detail));


            #line default
            #line hidden
                WriteLiteral("</pre>\r\n");



            #line 77 "..\..\ErrorDetailPage.cshtml"
            }



            #line default
            #line hidden


            #line 83 "..\..\ErrorDetailPage.cshtml"



            #line default
            #line hidden
            WriteLiteral("\r\n<p id=\"ErrorLogTime\">");



            #line 85 "..\..\ErrorDetailPage.cshtml"
            Write(string.Format(
                      @"Logged on {0} at {1}",
                      error.Time.ToLongDateString(),
                      error.Time.ToLongTimeString()));


            #line default
            #line hidden
            WriteLiteral("</p>\r\n\r\n");



            WriteLiteral("\r\n\r\n<p>See also:</p>\r\n\r\n<ul>\r\n\r\n");



            WriteLiteral("\r\n\r\n");



            #line 105 "..\..\ErrorDetailPage.cshtml"
            if (error.WebHostHtmlMessage.Length != 0)
            {
                var htmlUrl = basePageName + "/html?id=" + Uri.EscapeDataString(errorEntry.Id);


            #line default
            #line hidden
                WriteLiteral("        <li><a href=\"");



            #line 108 "..\..\ErrorDetailPage.cshtml"
                Write(basePageName);


            #line default
            #line hidden
                WriteLiteral("/html?id=");



            #line 108 "..\..\ErrorDetailPage.cshtml"
                Write(Uri.EscapeDataString(errorEntry.Id));


            #line default
            #line hidden
                WriteLiteral("\">Original ASP.NET error page</a></li>\r\n");



            #line 109 "..\..\ErrorDetailPage.cshtml"
            }



            #line default
            #line hidden


            #line 113 "..\..\ErrorDetailPage.cshtml"



            #line default
            #line hidden
            WriteLiteral("\r\n    <li>Raw/Source data in \r\n        <a rel=\"");



            #line 116 "..\..\ErrorDetailPage.cshtml"
            Write(HtmlLinkType.Alternate);


            #line default
            #line hidden
            WriteLiteral("\" \r\n           type=\"application/xml\" \r\n           href=\"xml");



            #line 118 "..\..\ErrorDetailPage.cshtml"
            Write(Request.Url.Query);


            #line default
            #line hidden
            WriteLiteral("\">XML</a>\r\n        or in\r\n        <a rel=\"");



            #line 120 "..\..\ErrorDetailPage.cshtml"
            Write(HtmlLinkType.Alternate);


            #line default
            #line hidden
            WriteLiteral("\" \r\n           type=\"application/json\" \r\n           href=\"json");



            #line 122 "..\..\ErrorDetailPage.cshtml"
            Write(Request.Url.Query);


            #line default
            #line hidden
            WriteLiteral("\">JSON</a>\r\n    </li>\r\n</ul>\r\n\r\n");



            #line 126 "..\..\ErrorDetailPage.cshtml"
            if (error.UserComments.Length != 0)
            {
            #line default
            #line hidden
                WriteLiteral("    <div id=\"UserComments\">\r\n        <h2>User Comments</h2>\r\n    </div>\r\n");



                WriteLiteral("    <pre>");



            #line 131 "..\..\ErrorDetailPage.cshtml"
                Write(error.UserComments);


            #line default
            #line hidden
                WriteLiteral("</pre>\r\n");



            #line 132 "..\..\ErrorDetailPage.cshtml"
            }


            #line default
            #line hidden
            WriteLiteral("\r\n");



            #line 134 "..\..\ErrorDetailPage.cshtml"



            #line default
            #line hidden

            #line 135 "..\..\ErrorDetailPage.cshtml"
            Write(MarkupCollection(error.ServerVariables, "ServerVariables", "Server Variables"));


            #line default
            #line hidden

            #line 135 "..\..\ErrorDetailPage.cshtml"



            #line default
            #line hidden

            #line 136 "..\..\ErrorDetailPage.cshtml"
            Write(MarkupCollection(error.SessionVariables, "SessionVariables", "Session Variables"));


            #line default
            #line hidden

            #line 136 "..\..\ErrorDetailPage.cshtml"



            #line default
            #line hidden

            #line 137 "..\..\ErrorDetailPage.cshtml"
            Write(MarkupCollection(error.QueryString, "QueryString", "Query String"));


            #line default
            #line hidden

            #line 137 "..\..\ErrorDetailPage.cshtml"



            #line default
            #line hidden

            #line 138 "..\..\ErrorDetailPage.cshtml"
            Write(MarkupCollection(error.Cookies, "Cookies", "Cookies"));


            #line default
            #line hidden

            #line 138 "..\..\ErrorDetailPage.cshtml"



            #line default
            #line hidden
            WriteLiteral("\r\n");



            WriteLiteral("\r\n");
        }