コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }