private void LogIncomingMessage(string payload) { try { var log = new ApiLog { ApplicationName = "signalr-hub", Verb = "signalr-inbound-message", Request = new Payload(payload) }; log.SetValue("title", "received-user-event"); Logger.WriteLogAsync(log); } catch (Exception exception) { exception.Data.Add("message", "subscribres invocation failed"); Platform.Common.ExceptionPolicy.HandleException(exception, Policies.DefaultPolicy); } }
private void LogIncomingMessage(string payload) { try { var log = new ApiLog { ApplicationName = "signalr-hub", Verb = "signalr-inbound-message", Request = new Payload(payload) }; log.SetValue("title", "received-user-event"); var task = Task.Run(async() => { await Logger.WriteLogAsync(log); }); task.Wait(); // } catch (Exception exception) { Platform.Common.ExceptionPolicy.HandleException(exception, Policies.DefaultPolicy); } }
private ApiLog GetApiLog() { var log = new ApiLog(); var dt = DateTime.UtcNow; var bytes = new UTF8Encoding(false).GetBytes("payload"); log.ApplicationName = App; log.AppDomain = AppDomain.CurrentDomain.FriendlyName; log.CorrelationId = CorrelationId; log.StackId = StackId; log.Message = Message; log.TenantId = TenantId; log.Request = new Payload("test request"); log.Response = new Payload("test response"); log.IsSuccessful = true; log.Verb = "POST"; log.Url = "testurl"; log.Api = "compositeSink"; log.TimeTakenInMs = 10.0d; log.RequestHeaders["rqheader"] = "RqheaderValue"; log.ResponseHeaders["rsheader"] = "RsheaderValue"; log.SetValue("int_field", 1); log.SetValue("string_field", "str"); log.SetValue("dt_field", dt); log.SetValue("long_field", 1L); log.SetValue("float_field", 1.0f); log.SetValue("double_field", 2.0d); log.SetValue("decimal_field", 3.0m); log.SetValue("bool_field", true); log.SetValue("map_field", new Dictionary <string, string>() { { "jsonMapField1", "jsonMapValue1" } }); log.SetValue("payload_field", bytes); log.SetValue("geo_field", new GeoPoint(10, 10)); log.SetValue("ip_field", IPAddress.Loopback); return(log); }
protected virtual ILog CreateApiLog(HttpRequest request, HttpResponse response, bool isSuccessful, TimeSpan timeTaken) { var requestLogData = request.LogData.ToList(); var apiLog = new ApiLog() { ApplicationName = CallContext.Current?.ApplicationName, CorrelationId = CallContext.Current?.CorrelationId, TenantId = CallContext.Current?.TenantId, StackId = CallContext.Current?.StackId, ApplicationTransactionId = CallContext.Current?.TransactionId, ClientIp = CallContext.Current?.IpAddress, TimeTakenInMs = timeTaken.TotalMilliseconds, Url = request.Uri.AbsoluteUri, IsSuccessful = isSuccessful }; string transactionId; if (response != null && response.Headers.TryGetValue(HeaderNames.TransactionId, out transactionId)) { apiLog.TransactionId = transactionId; } if (response != null) { apiLog.SetValue("http_status_code", (int)response.Status); } apiLog.SetValue("request_method", request.Method); if (request?.Payload != null) { apiLog.Request = new Payload(request.Payload); } if (response?.Payload != null) { apiLog.Response = new Payload(response.Payload); } if (request.Headers?.Keys != null) { foreach (var key in request.Headers?.Keys) { apiLog.RequestHeaders[key] = request.Headers[key]; } } if (response?.Headers?.Keys != null) { foreach (var key in response.Headers?.Keys) { apiLog.ResponseHeaders[key] = response.Headers[key]; } } if (Filters != null) { apiLog.Filters.AddRange(Filters); } // Always log the white listed headers as they are required for reporting purpose var whiteListedHeaders = CallContext.Current?.Headers; if (whiteListedHeaders != null) { foreach (var key in whiteListedHeaders.AllKeys.ToList()) { apiLog.RequestHeaders[key] = whiteListedHeaders[key]; } } SetLogDataToLog(request?.LogData, apiLog); SetLogDataToLog(response?.LogData, apiLog); return(apiLog); }
public async Task Log(object sender, LogEventArgs logEventArgs) { var context = CallContext.Current; var log = new ApiLog { ApplicationName = context.ApplicationName, Api = Api, Verb = Verb, TenantId = context.TenantId, CorrelationId = context.CorrelationId, StackId = context.StackId, ApplicationTransactionId = context.TransactionId, TransactionId = logEventArgs.ResponseHeaders != null ? logEventArgs.ResponseHeaders[HeaderNames.TransactionId] : null, ClientIp = context.IpAddress, Message = Message, TimeTakenInMs = logEventArgs.TimeTakenInSeconds * 1000, LogTime = logEventArgs.Timestamp, Url = logEventArgs.Url, IsSuccessful = (int)logEventArgs.HttpStatusCode / 100 == 2 }; log.SetValue("session_id", SessionId); log.SetValue("http_method", HttpMethod); log.SetValue("http_status_code", (int)logEventArgs.HttpStatusCode); if (string.IsNullOrEmpty(logEventArgs.RequestString) == false) { log.Request = new Payload(logEventArgs.RequestString); } else if (logEventArgs.Request != null) { log.Request = new Payload(ByteHelper.ToByteArrayUsingJsonSerialization(logEventArgs.Request)); } if (string.IsNullOrEmpty(logEventArgs.ResponseString) == false) { log.Response = new Payload(logEventArgs.ResponseString); } else if (logEventArgs.Response != null) { log.Response = new Payload(ByteHelper.ToByteArrayUsingJsonSerialization(logEventArgs.Response)); } if (logEventArgs.RequestHeaders?.AllKeys != null) { foreach (var key in logEventArgs.RequestHeaders?.AllKeys) { log.RequestHeaders[key] = logEventArgs.RequestHeaders[key]; } } if (logEventArgs.ContentHeaders?.AllKeys != null) { foreach (var key in logEventArgs.ContentHeaders?.AllKeys) { log.ResponseHeaders[key] = logEventArgs.ContentHeaders[key]; } } if (logEventArgs.ResponseHeaders?.AllKeys != null) { foreach (var key in logEventArgs.ResponseHeaders?.AllKeys) { log.ResponseHeaders[key] = logEventArgs.ResponseHeaders[key]; } } log.Filters.AddRange(LogFilters); await Platform.Common.Logging.Logger.WriteLogAsync(log); HandleApiMetering(logEventArgs); }