Esempio n. 1
0
        private static void SetBasicTimingProperties(ITiming timing, TimingDataBase timingData)
        {
            if (timing == null || timingData == null)
            {
                return;
            }

            timingData.DurationMilliseconds = timing.DurationMilliseconds;
            timingData.ExecuteType = timing.ExecuteType == null ? null : timing.ExecuteType.ToLowerInvariant();
            timingData.Id = timing.Id;
            timingData.MachineName = timing.MachineName;
            timingData.Name = timing.Name;
            timingData.ParentId = timing.ParentId;
            timingData.StartMilliseconds = timing.StartMilliseconds;
            timingData.Sort = timing.Sort;
            timingData.Started = ToSortableDateTimeString(timing.Started);
            if (timing.Tags != null && timing.Tags.Any())
            {
                timingData.Tags = new List<string>(timing.Tags);
            }
            timingData.Type = timing.Type;
        }
Esempio n. 2
0
        /// <summary>
        /// Logs the timing data via slf4net logger.
        /// </summary>
        /// <param name="timingData">The timing to be serialized to JSON and be logged.</param>
        /// <param name="aggregations">The aggregations to be merged to timing data.</param>
        protected void LogTimingData(TimingDataBase timingData
            , params KeyValuePair<string, TimingAggregation>[] aggregations)
        {
            if (!_logger.Value.IsInfoEnabled)
            {
                return;
            }

            var json = Serialize(timingData);

            // merge aggregations to JSON of timing data
            if (aggregations != null && aggregations.Length > 0)
            {
                var sb = new StringBuilder(json.Substring(0, json.Length - 1));

                foreach (var aggr in aggregations)
                {
                    var aggrData = new AggregationData();
                    aggrData.Count = aggr.Value.Count;
                    aggrData.Duration = aggr.Value.TotalDurationMilliseconds;

                    var jsonAggr = Serialize(aggrData);
                    var aggrType = aggr.Key.ToLowerInvariant();
                    sb.Append(",");
                    sb.Append(
                        jsonAggr.Substring(1, jsonAggr.Length - 2)
                        .Replace("count", aggrType + "Count")
                        .Replace("duration", aggrType + "Duration"));
                }

                sb.Append("}");
                json = sb.ToString();
            }

            _logger.Value.Info(json);
        }