internal LogData(ILatencyDetectionLogger logger, LatencyReportingThreshold threshold, LatencyDetectionContext trigger, ICollection <LatencyDetectionContext> backlog, LatencyDetectionException exception) { this.logger = logger; this.threshold = threshold; this.trigger = trigger; this.backlog = backlog; this.exception = exception; }
internal void Log(LatencyDetectionContext context) { foreach (KeyValuePair <LoggingType, ILatencyDetectionLogger> keyValuePair in this.loggers) { ILatencyDetectionLogger value = keyValuePair.Value; LoggingType key = keyValuePair.Key; LatencyDetectionContext latencyDetectionContext; LatencyReportingThreshold threshold; ICollection <LatencyDetectionContext> backlog; bool flag = this.checker.ShouldCreateReport(context, key, out latencyDetectionContext, out threshold, out backlog); if (flag) { LatencyDetectionException exception = latencyDetectionContext.CreateLatencyDetectionException(); PerformanceReporter.LogData state = new PerformanceReporter.LogData(value, threshold, latencyDetectionContext, backlog, exception); ThreadPool.QueueUserWorkItem(PerformanceReporter.LogReportDelegate, state); } } }
public void SetLogger(ILatencyDetectionLogger logger) { if (logger == null) { throw new ArgumentNullException("logger"); } LoggingType type = logger.Type; if (this.loggers.ContainsKey(type)) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "Can't set logger, because one is already set. You must first call RemoveLogger({0}.{1}).", new object[] { typeof(LoggingType), type })); } this.loggers.Add(type, logger); }