Ejemplo n.º 1
0
        /// <summary>
        ///     Возвращает установленные приоритеты важности, начиная с заданной
        /// </summary>
        /// <param name="loggingLevel">Минимальная важность</param>
        /// <returns></returns>
        /// <exception cref="InvalidEnumArgumentException"></exception>
        public static LoggingLevel GetMinimumLevel(LoggingLevel loggingLevel)
        {
            if (!Enum.IsDefined(typeof(LoggingLevel), loggingLevel))
            {
                throw new InvalidEnumArgumentException(nameof(loggingLevel), (int)loggingLevel, typeof(LoggingLevel));
            }

            //Крайние положения возвращаем без изменения
            if (loggingLevel == LoggingLevel.None || loggingLevel == LoggingLevel.All)
            {
                return(loggingLevel);
            }

            //Получаем массив приоритетов
            var priorities = GetLoggingPriorities();

            //Определяем индекс необходимого нам приоритета
            var index = Array.FindIndex(priorities, p => loggingLevel.HasFlag(p));

            //Устанавливаем важности до найденного включительно
            var result = LoggingLevel.None;

            for (var i = 0; i <= index; i++)
            {
                result |= priorities[i];
            }

            return(result);
        }
Ejemplo n.º 2
0
        public void Write(string info, LoggingLevel level = LoggingLevel.Other)
        {
            if (!enabledLevels.HasFlag(level))
            {
                return;
            }

            Console.WriteLine(info);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     Возвращает первую приоритетную важность из заданной
        /// </summary>
        /// <param name="loggingLevel">Важность, в которой будет произведен поиск приоритетной</param>
        /// <param name="descending">Приоритеты по убыванию? (иначе по возрастанию)</param>
        /// <returns></returns>
        public static LoggingLevel GetFirstPriorityLevel(this LoggingLevel loggingLevel, bool descending = true)
        {
            //Получаем массив приоритетов
            var priorities = GetLoggingPriorities();

            //Если не по убыванию, то меняем порядок на обратный
            if (!descending)
            {
                Array.Reverse(priorities);
            }

            //Перебираем все приоритеты
            foreach (var priority in priorities)
            {
                //Если важность приоритетна, то возвращаем ее
                if (loggingLevel.HasFlag(priority))
                {
                    return(priority);
                }
            }

            //Важность по умолчанию
            return(LoggingLevel.None);
        }