Exemple #1
0
        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);
        }
Exemple #2
0
        /// <summary>
        /// Основной рабочий конструктор
        /// </summary>
        /// <param name="baseLoger">Набор логеров для логирования</param>
        public TypeLoger(LogSet baseLoger)
        {
            if (baseLoger == null)
            {
                m_baseLoger = GetDefaultLoger <TypeLoger <TType> >();
            }

            m_baseLoger = baseLoger;
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        static LogSet GetDefaultLogSet()
        {
            try
            {
                var set = new LogSet();

                set.AddLoger(new WindowsLoger(WinLogSource));
                return(set);
            }
            catch (Exception ex)
            {
                WindowsLoger.LogError(winLogSource, "Возникло исключение при генерации набора логирования по умолчанию. Возвращена пустая ссылка на Набор. Возможен вал непредвиденных ошибок.", ex);

                return(null);
            }
        }
Exemple #5
0
        /// <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);
        }