static LogSet Get_LogSetByFlag(string setFlag) { if (string.IsNullOrEmpty(setFlag)) { setFlag = DefaultLogSetFlag; } setFlag = setFlag.ToLower(); LogSet set = new LogSet(); switch (setFlag) { case LogSetFlag_File: set.AddLoger(new FileLoger()); break; case LogSetFlag_UserFile: set.AddLoger(new UserFileLoger()); break; case LogSetFlag_WinLog: set.AddLoger(new WindowsLoger(WinLogSource)); break; //флаги наборов логирования добавлять сюда case DefaultLogSetFlag: default: set = DefaultSet.GetCopy(); break; } return(set); }
/// <summary> /// Основной рабочий конструктор /// </summary> /// <param name="baseLoger">Набор логеров для логирования</param> public TypeLoger(LogSet baseLoger) { if (baseLoger == null) { m_baseLoger = GetDefaultLoger <TypeLoger <TType> >(); } m_baseLoger = baseLoger; }
/// <summary> /// Получение специфического набора логирования /// </summary> /// <param name="sourceMarker">Маркер - источник логирования (для статических типов)</param> /// <param name="flag">Флаг набора (если известен)</param> /// <returns>Возвращает набор логирования для класса</returns> public static LogSet GetLogSet(string sourceMarker, string flag) { LogSet newSet = null; if (string.IsNullOrEmpty(sourceMarker)) { sourceMarker = "UnKnownSource"; } if (flag == null) { if (Settings != null) { flag = Settings.LogSetFlag; } } if (!LogSetFlags.IsCorrectFlag(flag)) { flag = DefaultLogSetFlag; } try { if (m_logSets.ContainsKey(flag)) { newSet = m_logSets[flag].GetCopy(); } else { newSet = Get_LogSetByFlag(flag); m_logSets.Add(flag, newSet); } } catch (Exception ex) { WindowsLoger.LogError(winLogSource, "Возникло исключение при получении набора логирования для класса. Возвращён набор по умолчанию", ex, new LogParameter("Логируемый тип", sourceMarker) , new LogParameter("Флаг набора", flag == null ? "NULL" : flag)); newSet = GetDefaultLogSet(); } //ссылаемся на статическое всойство, т.к. предполагается, //что при первой загрузке кода в Домене, будут проставлены необходимые свойства //или впоследствии могут поменяться newSet.Settings = Settings; //добавляем имя класса при логировании сообщений newSet.AddParameter(new LogParameter("Тип", sourceMarker)); newSet.AddParameter(new LogParameter("Пользователь", Environment.UserName)); return(newSet); }
static LogSet GetDefaultLogSet() { try { var set = new LogSet(); set.AddLoger(new WindowsLoger(WinLogSource)); return(set); } catch (Exception ex) { WindowsLoger.LogError(winLogSource, "Возникло исключение при генерации набора логирования по умолчанию. Возвращена пустая ссылка на Набор. Возможен вал непредвиденных ошибок.", ex); return(null); } }
/// <summary> /// Получает новый экземпляр Набора с теми же настройками/логерами/параметрами /// </summary> /// <returns>Возвращает новый экземпляр с теми же настройками</returns> public LogSet GetCopy() { var copy = new LogSet(); if (this.m_logers.Count != copy.m_logers.Count) { copy.m_logers.Clear(); copy.m_logers.AddRange(this.m_logers); } if (this.m_parameters.Count != copy.m_parameters.Count) { copy.m_parameters.Clear(); copy.m_parameters.AddRange(this.m_parameters); } return(copy); }