コード例 #1
0
 /// <summary>
 /// Log the test
 /// </summary>
 /// <param name="request">Request</param>
 /// <param name="perfLog">PerfLog</param>
 void LogToConsole(Request request, PerfLog perfLog)
 {
     // only log 4XX and 5XX status codes unless verbose is true or config is null
     if (_config == null || (bool)_config.Verbose || perfLog.StatusCode > 399 || !string.IsNullOrEmpty(perfLog.ValidationResults))
     {
         Console.WriteLine($"{DateTime.UtcNow.ToString("MM/dd hh:mm:ss", CultureInfo.InvariantCulture)}\t{perfLog.StatusCode}\t{perfLog.Duration}\t{perfLog.Category.PadRight(13)}\t{perfLog.PerfLevel}\t{perfLog.Validated}\t{perfLog.ContentLength}\t{request.Path}{perfLog.ValidationResults.Replace("\n", string.Empty, StringComparison.OrdinalIgnoreCase)}", CultureInfo.InvariantCulture);
     }
 }
コード例 #2
0
        /// <summary>
        /// Create a PerfLog
        /// </summary>
        /// <param name="request">Request</param>
        /// <param name="validationResults">validation errors</param>
        /// <param name="duration">duration</param>
        /// <param name="body">content body</param>
        /// <param name="contentLength">content length</param>
        /// <param name="statusCode">status code</param>
        /// <returns></returns>
        public PerfLog CreatePerfLog(Request request, string validationResults, double duration, string body, long contentLength, int statusCode)
        {
            // map the parameters
            PerfLog log = new PerfLog
            {
                StatusCode        = statusCode,
                Category          = request?.PerfTarget?.Category ?? string.Empty,
                Validated         = string.IsNullOrEmpty(validationResults),
                ValidationResults = validationResults,
                Body          = body,
                Duration      = duration,
                ContentLength = contentLength,
                PerfLevel     = 0
            };

            // determine the Performance Level based on category
            if (!string.IsNullOrEmpty(log.Category))
            {
                if (Targets.ContainsKey(log.Category))
                {
                    // lookup the target
                    PerfTarget target = Targets[log.Category];

                    if (target != null)
                    {
                        // set to max
                        log.PerfLevel = target.Quartiles.Count + 1;

                        for (int i = 0; i < target.Quartiles.Count; i++)
                        {
                            // find the lowest Perf Target achieved
                            if (duration <= target.Quartiles[i])
                            {
                                log.PerfLevel = i + 1;
                                break;
                            }
                        }
                    }
                }
            }

            return(log);
        }