Esempio n. 1
0
        public override void Log(ExceptionLoggerContext context)
        {
            var ex = context.Exception;

            string strLogText = "";

            strLogText += Environment.NewLine + "Message ---\n{0}" + ex.Message;
            strLogText += Environment.NewLine + "StackTrace ---\n{0}" + ex.StackTrace;
            strLogText += Environment.NewLine + "TargetSite ---\n{0}" + ex.TargetSite;

            if (ex.InnerException != null)
            {
                strLogText += Environment.NewLine + "Inner Exception is {0}" + ex.InnerException;//error prone
            }
            if (ex.HelpLink != null)
            {
                strLogText += Environment.NewLine + "HelpLink ---\n{0}" + ex.HelpLink;//error prone
            }

            var requestedURi  = (string)context.Request.RequestUri.AbsoluteUri;
            var requestMethod = context.Request.Method.ToString();
            var timeUtc       = DateTime.Now;

            LoggingCRN sqlErrorLogging = new LoggingCRN();
            ApiErrorCE apiError        = new ApiErrorCE()
            {
                Message       = strLogText,
                RequestUri    = requestedURi,
                RequestMethod = requestMethod,
                TimeUtc       = DateTime.Now
            };

            sqlErrorLogging.InsertErrorLog(apiError);
        }
Esempio n. 2
0
        protected override async Task <HttpResponseMessage> SendAsync(HttpRequestMessage request,
                                                                      CancellationToken cancellationToken)
        {
            var requestedMethod = request.Method;
            var userHostAddress = HttpContext.Current != null ? HttpContext.Current.Request.UserHostAddress : "0.0.0.0";
            var useragent       = request.Headers.UserAgent.ToString();
            var requestMessage  = await request.Content.ReadAsByteArrayAsync();

            var uriAccessed = request.RequestUri.AbsoluteUri;

            var responseHeadersString = new StringBuilder();

            foreach (var header in request.Headers)
            {
                responseHeadersString.Append($"{header.Key}: {String.Join(", ", header.Value)}{Environment.NewLine}");
            }

            var messageLoggingHandler = new LoggingCRN();

            var requestLog = new ApiLogCE()
            {
                Headers         = responseHeadersString.ToString(),
                AbsoluteUri     = uriAccessed,
                Host            = userHostAddress,
                RequestBody     = Encoding.UTF8.GetString(requestMessage),
                UserHostAddress = userHostAddress,
                Useragent       = useragent,
                RequestedMethod = requestedMethod.ToString(),
                StatusCode      = string.Empty
            };

            messageLoggingHandler.IncomingMessageAsync(requestLog);

            var response = await base.SendAsync(request, cancellationToken);

            byte[] responseMessage = null;
            if (response.IsSuccessStatusCode)
            {
                if (response.Content != null)
                {
                    responseMessage = await response.Content.ReadAsByteArrayAsync();
                }
                else
                {
                    responseMessage = Encoding.UTF8.GetBytes(response.ReasonPhrase);
                }
            }

            var responseLog = new ApiLogCE()
            {
                Headers         = responseHeadersString.ToString(),
                AbsoluteUri     = uriAccessed,
                Host            = userHostAddress,
                RequestBody     = responseMessage == null ? "" : Encoding.UTF8.GetString(responseMessage),
                UserHostAddress = userHostAddress,
                Useragent       = useragent,
                RequestedMethod = requestedMethod.ToString(),
                StatusCode      = string.Empty
            };

            messageLoggingHandler.OutgoingMessageAsync(responseLog);
            return(response);
        }