public void OnFlush(FlushLogArgs args, ILogger logger) { FlushProperties flushProperties = GetAndValidateFlushProperties(args); if (flushProperties == null) { return; } InternalHelpers.Log("KissLogApiListener: OnFlush begin", LogLevel.Trace); ObfuscateService?.Obfuscate(args); TruncateService?.Truncate(args); Requests.CreateRequestLogRequest request = CreateRequestLogRequestFactory.Create(args); request.OrganizationId = flushProperties.Application.OrganizationId; request.ApplicationId = flushProperties.Application.ApplicationId; request.Keywords = Configuration.Configuration.Options.ApplyAddRequestKeywordstHeader(args); // we need to copy files, because we start a new Thread, and the existing files will be deleted before accessing them IList <LoggerFile> copy = CopyFiles(args.Files?.ToList()); IFlusher flusher = CreateFlusher(flushProperties); if (UseAsync == true) { flusher.FlushAsync(request, copy).ConfigureAwait(false); } else { flusher.Flush(request, copy); } InternalHelpers.Log("KissLogApiListener: OnFlush complete", LogLevel.Trace); }
public static Requests.CreateRequestLogRequest Create(FlushLogArgs args) { Requests.CreateRequestLogRequest result = new Requests.CreateRequestLogRequest(); result.SdkName = InternalHelpers.SdkName; result.SdkVersion = InternalHelpers.SdkVersion; if (args.WebProperties == null) { return(result); } DateTime startDateTime = args.WebProperties.Request.StartDateTime; DateTime endDateTime = args.WebProperties.Response.EndDateTime; result.StartDateTime = startDateTime; result.DurationInMilliseconds = (endDateTime - startDateTime).TotalMilliseconds; result.WebRequest = ToWebRequestProperties(args.WebProperties); result.MachineName = args.WebProperties.Request.MachineName; result.IsNewSession = args.WebProperties.Request.IsNewSession; result.SessionId = args.WebProperties.Request.SessionId; result.IsAuthenticated = args.WebProperties.Request.IsAuthenticated; result.User = ToUser(args.WebProperties.Request.User); IEnumerable <LogMessage> logMessages = args.MessagesGroups.SelectMany(p => p.Messages).OrderBy(p => p.DateTime).ToList(); result.LogMessages = logMessages.Select(p => ToLogMessage(p, startDateTime)).ToList(); result.Exceptions = args.CapturedExceptions?.Select(p => ToCapturedException(p)).ToList(); result.CustomProperties = args.CustomProperties?.ToList(); return(result); }