private View CreateLoggedErrorView(ViewGroup parent, LoggedError error)
        {
            TextView tv = new TextView(parent.Context)
            {
                Text = error.Name + "\n" + error.Date + "\n" + error.Message
            };

            tv.SetTextIsSelectable(true);
            var padding = ThemeHelper.AsPx(parent.Context, 4);

            tv.SetPadding(0, padding, 0, padding);
            return(tv);
        }
Example #2
0
        public IActionResult Index()
        {
            var RequestId = "";

            try
            {
                RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier;

                RequestId = RequestId?.Trim('|');
                RequestId = RequestId?.Trim('.');

                var exceptionHandlerPathFeature = HttpContext.Features.Get <IExceptionHandlerPathFeature>();

                _logger.LogError($"RequestId={RequestId} Error={exceptionHandlerPathFeature?.Error} Path={exceptionHandlerPathFeature?.Path}");

                var error = new LoggedError()
                {
                    Id                  = RequestId,
                    ExceptionType       = exceptionHandlerPathFeature?.Error?.GetType().FullName,
                    ExceptionMessage    = exceptionHandlerPathFeature?.Error?.Message,
                    ExceptionStackTrace = exceptionHandlerPathFeature?.Error?.StackTrace,
                    Path                = exceptionHandlerPathFeature?.Path,
                    CreatedDateTime     = DateTime.Now
                };

                _context.LoggedErrors.Add(error);
                _context.SaveChanges();
            }
            catch (Exception e)
            {
                _logger.LogError($"Failed to log error. e={e}");
            }

            return(View(new IndexViewModel()
            {
                RequestId = RequestId
            }));
        }