/// <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); } }
/// <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); }