예제 #1
0
 private void SerializeMetadata(MetricEndpoint endpoint, IEnumerable <MetaData> metadata)
 {
     Debug.WriteLine("StackExchange.Metrics: Serializing metadata.");
     endpoint.Handler.SerializeMetadata(metadata);
     _lastMetadataFlushTime = DateTime.UtcNow;
     Debug.WriteLine("StackExchange.Metrics: Serialized metadata.");
 }
예제 #2
0
        private void SerializeMetrics(MetricEndpoint endpoint, DateTime timestamp, out long metricsCount, out long bytesWritten)
        {
            lock (_metricsLock)
            {
                metricsCount = 0;
                bytesWritten = 0;
                if (_metrics.Count == 0)
                {
                    return;
                }

                using (var batch = endpoint.Handler.BeginBatch())
                {
                    foreach (var m in _metrics)
                    {
                        try
                        {
                            m.SerializeInternal(batch, timestamp);
                        }
                        catch (Exception ex)
                        {
                            ex.Data["Endpoint.Name"] = endpoint.Name;
                            ex.Data["Endpoint.Type"] = endpoint.Handler.GetType();

                            SendExceptionToHandler(ex);
                        }
                    }

                    metricsCount += batch.MetricsWritten;
                    bytesWritten += batch.BytesWritten;
                }
            }
        }