public MetricsEventManager(ScriptSettingsManager settingsManager, IEventGenerator generator, int functionActivityFlushIntervalSeconds, int metricsFlushIntervalMS = DefaultFlushIntervalMS)
{
// we read these in the ctor (not static ctor) since it can change on the fly
appName = GetNormalizedString(settingsManager.AzureWebsiteDefaultSubdomain);
subscriptionId = Utility.GetSubscriptionId() ?? string.Empty;
_eventGenerator = generator;
_functionActivityFlushIntervalSeconds = functionActivityFlushIntervalSeconds;
QueuedEvents = new ConcurrentDictionary<string, SystemMetricEvent>(StringComparer.OrdinalIgnoreCase);
// Initialize the periodic log flush timer
_metricsFlushTimer = new Timer(TimerFlush, null, metricsFlushIntervalMS, metricsFlushIntervalMS);
}