Ejemplo n.º 1
0
        void OnLogerError(ILoger <ILogParameter> loger)
        {
            //при возникновении ошибки во время логирования
            LogerPack pack = null;

            foreach (var p in m_logers)
            {
                if (p.Loger != null)
                {
                    if (p.Loger == loger)
                    {
                        pack = p;
                        break;
                    }
                }
            }

            //удаляем косячный логер
            pack.Loger.LogerError -= OnLogerError;
            m_logers.Remove(pack);

            WindowsLoger.LogMessage("LogSet", "Логер был исключён из набора из-за исключения при логировании", System.Diagnostics.EventLogEntryType.Warning
                                    , new LogParameter("Тип логера", pack.Loger.GetType().FullName));

            if (m_logers.Count == 0)
            {
                if (!pack.Loger.GetType().Equals(typeof(WindowsLoger)))
                {
                    AddLoger(new WindowsLoger("LogSetGenerated"));

                    WindowsLoger.LogMessage("LogSet", "Логирование было переключено на журнал Windows из-за отсутствия других логеров в Наборе", System.Diagnostics.EventLogEntryType.Information
                                            , new LogParameter("Тип логера", pack.Loger.GetType().FullName));
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Добавление логера для логирования с указанными параметрами
        /// </summary>
        /// <param name="loger">Целевой логер для записи</param>
        public void AddLoger(LogerPack pack)
        {
            if (pack.Loger == null)
            {
                throw new ArgumentNullException("Не допустимо добавление в набор логирования пустого экземпляра логера");
            }
            m_logers.Add(pack);


            pack.Loger.LogerError += OnLogerError;
        }