//Antes da Action public void OnActionExecuted(ActionExecutedContext context) { ObjectResult obj = context.Result as ObjectResult; var status = obj.StatusCode; HttpStatusCode code = (HttpStatusCode)status; var message = new HttpResponseMessage(code); short result = 0; if (message.IsSuccessStatusCode) { result = 1; } long timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); var tipo = (string)context.RouteData.Values["Controller"]; var log = new API_Log { DATA_REFERENCIA = timestamp, MENSAGEM = message.ReasonPhrase, TIPO = tipo, DETALHE = (int)status, RESULTADO = result }; _uof.API_LogRepository.Add(log); _uof.Commit(); }
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 MessageLogging(); var requestLog = new API_Log() { 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; if (response.IsSuccessStatusCode) { responseMessage = await response.Content.ReadAsByteArrayAsync(); } else { responseMessage = Encoding.UTF8.GetBytes(response.ReasonPhrase); } var responseLog = new API_Log() { Headers = responseHeadersString.ToString(), AbsoluteUri = uriAccessed, Host = userHostAddress, RequestBody = Encoding.UTF8.GetString(responseMessage), UserHostAddress = userHostAddress, Useragent = useragent, RequestedMethod = requestedMethod.ToString(), StatusCode = string.Empty }; messageLoggingHandler.OutgoingMessageAsync(responseLog); return(response); }
public void OutgoingMessageAsync(API_Log apiLog) { apiLog.RequestType = "Response"; var sqlErrorLogging = new ApiLogging(); sqlErrorLogging.InsertLog(apiLog); }
public void InsertLog(API_Log apiLog) { try { using (var sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["MainConnection"].ConnectionString)) { sqlConnection.Open(); var cmd = new SqlCommand("API_Logging", connection: sqlConnection) { CommandType = CommandType.StoredProcedure }; cmd.Parameters.AddWithValue("@Host", apiLog.Host); cmd.Parameters.AddWithValue("@Headers", apiLog.Headers); cmd.Parameters.AddWithValue("@StatusCode", apiLog.StatusCode); cmd.Parameters.AddWithValue("@RequestBody", apiLog.RequestBody); cmd.Parameters.AddWithValue("@RequestedMethod", apiLog.RequestedMethod); cmd.Parameters.AddWithValue("@UserHostAddress", apiLog.UserHostAddress); cmd.Parameters.AddWithValue("@Useragent", apiLog.Useragent); cmd.Parameters.AddWithValue("@AbsoluteUri", apiLog.AbsoluteUri); cmd.Parameters.AddWithValue("@RequestType", apiLog.RequestType); cmd.ExecuteNonQuery(); } } catch (Exception) { throw; } }