/// <summary> /// Инициализация журнала из конфигурационного файла. /// Выполняется только один раз. /// </summary> private static void InitFromConfiguration() { if (!isInitiated) { lock (InitSync) { if (!isInitiated) { var section = ConfigurationManager.GetSection("metrics") as MetricsConfigurationSection; if (section != null) { Type factoryType = Type.GetType(section.AdapterFactory); if (factoryType != null) { var factory = Activator.CreateInstance(factoryType) as IMetricLoggerAdapterFactory; if (factory != null) { IMetricLoggerAdapter createdAdapter = factory.Create( section.FactoryParameters.Elements.ToDictionary( element => element.Key, element => element.Value)); SetAdapter(createdAdapter); } } } isInitiated = true; } } } }
/// <summary> /// Регистрация нового адаптера, который будет использоваться для сохранения метрики в журнал. /// После регистрации вызывается инициализация адаптера. /// </summary> /// <param name="newAdapter">Адаптер, используемый для сохранения метрик в журнал.</param> public static void SetAdapter(IMetricLoggerAdapter newAdapter) { adapter = newAdapter; adapter.Initialize(); }