From bfbc8ffaee003eb7597445b5707fe90ec73ba797 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Mon, 28 Mar 2022 21:55:07 +0300 Subject: [PATCH 1/9] =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BF=D0=BE=D0=BB=D1=8F=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B0=D1=81=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/file-appender.os | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/file-appender.os b/src/file-appender.os index 8533150..5407dd0 100644 --- a/src/file-appender.os +++ b/src/file-appender.os @@ -4,21 +4,21 @@ // ////////////////////////////////////////////////////////////////////////// -Перем мФайлЛога; +Перем ФайлЛога; Процедура ОткрытьФайл(Знач Путь, Знач Кодировка = "utf-8", Знач Добавлять = Истина) Экспорт - мФайлЛога = Новый ЗаписьТекста(Путь, Кодировка,,Добавлять); + ФайлЛога = Новый ЗаписьТекста(Путь, Кодировка,,Добавлять); КонецПроцедуры Процедура Вывести(Знач Сообщение, Знач УровеньСообщения) Экспорт ПроверитьИнициализацию(); - мФайлЛога.ЗаписатьСтроку(Сообщение); + ФайлЛога.ЗаписатьСтроку(Сообщение); КонецПроцедуры Процедура Закрыть() Экспорт ПроверитьИнициализацию(); - мФайлЛога.Закрыть(); - мФайлЛога = Неопределено; + ФайлЛога.Закрыть(); + ФайлЛога = Неопределено; КонецПроцедуры // Устанавливает свойство аппендера, заданное в конфигурационном файле @@ -30,7 +30,7 @@ КонецПроцедуры // УстановитьСвойство() Процедура ПроверитьИнициализацию() - Если мФайлЛога = Неопределено Тогда + Если ФайлЛога = Неопределено Тогда ВызватьИсключение "Не открыт файл лога"; КонецЕсли; КонецПроцедуры From 4609d563c73972be67707978dd85838f09e5fad1 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Mon, 28 Mar 2022 21:55:45 +0300 Subject: [PATCH 2/9] =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=BA=D0=B0=20OneScript=201.7.0=20=D0=B8=20=D0=B2=D1=8B=D1=88?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- tests/logos-test.os | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packagedef b/packagedef index 6885d7c..8c6956e 100644 --- a/packagedef +++ b/packagedef @@ -1,6 +1,6 @@  Описание.Имя("logos") - .Версия("1.3.0") + .Версия("1.7.0") .ЗависитОт("asserts", "0.4.0") .ВключитьФайл("src") .ВключитьФайл("tests") diff --git a/tests/logos-test.os b/tests/logos-test.os index 2846c89..d7d39b2 100644 --- a/tests/logos-test.os +++ b/tests/logos-test.os @@ -1,4 +1,4 @@ -#Использовать ".." +#Использовать ".." #Использовать asserts #Использовать tempfiles @@ -100,8 +100,7 @@ ВФайл = Новый ВыводЛогаВФайл(); Утверждения.ПроверитьРавенство(Тип("ВыводЛогаВФайл"), ТипЗнч(ВФайл)); - Консоль = Новый ВыводЛогаВКонсоль(); - Утверждения.ПроверитьРавенство(Тип("ВыводЛогаВКонсоль"), ТипЗнч(Консоль)); + ВыводЛогаВКонсоль = Новый ВыводЛогаВКонсоль(); КонецПроцедуры From abe6d23f6e7a3beb5c98d49312624ece473d25ce Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Mon, 28 Mar 2022 23:47:03 +0300 Subject: [PATCH 3/9] =?UTF-8?q?=D0=A3=D1=80=D0=BE=D0=B2=D0=B5=D0=BD=D1=8C?= =?UTF-8?q?=20=D1=81=D0=BF=D0=BE=D1=81=D0=BE=D0=B1=D0=BE=D0=B2=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0=20=D0=B1=D0=BE=D0=BB=D0=B5=D0=B5?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D0=BE=D1=80=D0=B8=D1=82=D0=B8=D1=82=D0=B5?= =?UTF-8?q?=D0=BD,=20=D1=87=D0=B5=D0=BC=20=D1=83=D1=80=D0=BE=D0=B2=D0=B5?= =?UTF-8?q?=D0=BD=D1=8C=20=D0=BB=D0=BE=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit полезно для вывода логов в фоновом режиме например, основной лог и способ вывода с уровнем Информация а доп.лог в файл с уровнем Отладка в итоге всегда можно иметь отладочный лог на CI без повторного перезапуска сборок --- src/log.os | 70 +++++++++++--------- tests/logos-test.os | 152 ++++++++++++++++++++++++++------------------ 2 files changed, 132 insertions(+), 90 deletions(-) diff --git a/src/log.os b/src/log.os index 45c2392..3b51929 100644 --- a/src/log.os +++ b/src/log.os @@ -24,15 +24,15 @@ Возврат мТекущийУровень; КонецФункции -Функция Поля(Поле1 = Неопределено, ЗначениеПоля1 = Неопределено, +Функция Поля(Поле1 = Неопределено, ЗначениеПоля1 = Неопределено, Поле2 = Неопределено, ЗначениеПоля2 = Неопределено, Поле3 = Неопределено, ЗначениеПоля3 = Неопределено, Поле4 = Неопределено, ЗначениеПоля4 = Неопределено ) Экспорт - - + + НаборПолей = Новый Соответствие(); - + Если НЕ Поле1 = Неопределено Тогда НаборПолей.Вставить(Поле1, ЗначениеПоля1); КонецЕсли; @@ -45,29 +45,29 @@ Если НЕ Поле4 = Неопределено Тогда НаборПолей.Вставить(Поле4, ЗначениеПоля4); КонецЕсли; - + Возврат ПоляИз(НаборПолей); КонецФункции Функция ПоляИз(Знач НаборПолей, Знач КлючиИсключения = "") Экспорт - + ЛогСПолями = Новый Лог(мИмяЛога); ЛогСПолями.УстановитьРаскладку(мРаскладкаСообщения); ЛогСПолями.УстановитьУровень(мТекущийУровень); Если мСпособВыводаЗаданВручную Тогда Для каждого СпособВыбора Из мСпособыВывода Цикл - + ЛогСПолями.ДобавитьСпособВывода(СпособВыбора, мУровниАппендеров[СпособВыбора].Уровень); - + КонецЦикла; КонецЕсли; ДополнительныеПоля = Новый Соответствие(); Если мДополнительныеПоляЛога.Количество() > 0 Тогда - + Для каждого ПолеРодителя Из мДополнительныеПоляЛога Цикл ДополнительныеПоля.Вставить(ПолеРодителя.Ключ, ПолеРодителя.Значение); КонецЦикла; @@ -77,8 +77,8 @@ МассивКлючейИсключения = ПолучитьМассивКлючейИсключения(КлючиИсключения); Для каждого ПолеНабора Из НаборПолей Цикл - - Если МассивКлючейИсключения.Количество() > 0 + + Если МассивКлючейИсключения.Количество() > 0 И Не МассивКлючейИсключения.Найти(ПолеНабора.Ключ) = Неопределено Тогда Продолжить; КонецЕсли; @@ -95,7 +95,7 @@ КонецФункции Функция ПолучитьМассивКлючейИсключения(Знач КлючиИсключения) - + МассивКлючей = Новый Массив(); Если Не ЗначениеЗаполнено(КлючиИсключения) Тогда @@ -103,7 +103,7 @@ КонецЕсли; МассивКлючейИсключения = СтрРазделить(КлючиИсключения, ","); - + Для каждого ЭлементМассива Из МассивКлючейИсключения Цикл МассивКлючей.Добавить(СокрЛП(ЭлементМассива)); КонецЦикла; @@ -162,7 +162,7 @@ КонецПроцедуры -// Возвращает признак ручного/собственного задания способа вывода +// Возвращает признак ручного/собственного задания способа вывода // // Возвращаемое значение: // Булево - Истина, если добавляли свои способы вывода, и Ложь, если не добавляли @@ -187,7 +187,7 @@ НовыйУровень = Уровень(); ЗаданЯвно = Ложь; КонецЕсли; - + НастройкаСпособаВывода = НоваяНастройкаСпособаВывода(НовыйУровень, ЗаданЯвно); мУровниАппендеров[СпособВывода] = НастройкаСпособаВывода; @@ -202,7 +202,7 @@ Процедура ПроверитьПоддержкуAPIВывести(СпособВывода, НастройкаСпособаВывода) Рефлектор = Новый Рефлектор; Методы = Рефлектор.ПолучитьТаблицуМетодов(СпособВывода); - + МетодВывестиСобытие = Методы.Найти("ВывестиСобытие"); Если МетодВывестиСобытие <> Неопределено Тогда НастройкаСпособаВывода.ВерсияAPI = 3; @@ -223,7 +223,7 @@ Процедура ОпределитьВерсиюAPIРаскладкиСообщения() мВерсияAPIРаскладкиСообщения = 1; - + Рефлектор = Новый Рефлектор; Методы = Рефлектор.ПолучитьТаблицуМетодов(мРаскладкаСообщения); МетодПолучитьФорматированноеСообщение = Методы.Найти("ПолучитьФорматированноеСообщение"); @@ -312,17 +312,29 @@ Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено, Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) Экспорт - Если УровеньСообщения < Уровень() Тогда + ВыводитьСообщение = УровеньСообщения >= Уровень(); + Если НЕ ВыводитьСообщение Тогда + + Для Каждого СпособВывода Из мСпособыВывода Цикл + НастройкаАппендера = мУровниАппендеров[СпособВывода]; + УровеньСпособаВывода = НастройкаАппендера.Уровень; + Если УровеньСпособаВывода = Неопределено Или УровеньСообщения >= УровеньСпособаВывода Тогда + ВыводитьСообщение = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + Если Не ВыводитьСообщение Тогда Возврат; КонецЕсли; Если ЕстьЗаполненныеПараметры(Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7, Параметр8, Параметр9) Тогда - + Сообщение = СтрШаблон(Сообщение, Параметр1, Параметр2, Параметр3, Параметр4, Параметр5, Параметр6, Параметр7, Параметр8, Параметр9); КонецЕсли; - + СтроительСобытияЛога = Новый СтроительСобытияЛога; СтроительСобытияЛога.УстановитьИмяЛога(мИмяЛога); СтроительСобытияЛога.УстановитьУровень(УровеньСообщения); @@ -330,16 +342,16 @@ СтроительСобытияЛога.УстановитьСообщение(Сообщение); СтроительСобытияЛога.УстановитьВремяСобытия(ТекущаяУниверсальнаяДатаВМиллисекундах()); СтроительСобытияЛога.УстановитьДополнительныеПоля(мДополнительныеПоляЛога); - + СобытиеЛога = СтроительСобытияЛога.Создать(); - + Если мВерсияAPIРаскладкиСообщения = 2 Тогда ВыводимоеСообщение = мРаскладкаСообщения.ПолучитьФорматированноеСообщение(СобытиеЛога); Иначе ВыводимоеСообщение = мРаскладкаСообщения.Форматировать(СобытиеЛога.ПолучитьУровень(), СобытиеЛога.ПолучитьСообщение()); КонецЕсли; СобытиеЛога.УстановитьФорматированноеСообщение(ВыводимоеСообщение); - + Для Каждого СпособВывода Из мСпособыВывода Цикл НастройкаАппендера = мУровниАппендеров[СпособВывода]; УровеньСпособаВывода = НастройкаАппендера.Уровень; @@ -379,24 +391,24 @@ ИначеЕсли НЕ Параметр9 = Неопределено Тогда Возврат Истина; КонецЕсли; - + Возврат Ложь; КонецФункции Процедура Инициализация() - + мВложенныеЛоги = Новый Массив(); мИдентификатор = Новый УникальныйИдентификатор; мДополнительныеПоляЛога = Новый Соответствие(); УстановитьУровень(УровниЛога.Информация); ИнициализироватьСпособыВывода(); - + КонецПроцедуры Процедура ИнициализироватьСпособыВывода() - + УстановитьРаскладку(Новый ОсновнаяРаскладкаСообщения); мСпособВыводаЗаданВручную = Ложь; @@ -409,11 +421,11 @@ мУровниАппендеров[ВыводПоУмолчанию] = НастройкаСпособаВывода; ПроверитьПоддержкуAPIВывести(ВыводПоУмолчанию, НастройкаСпособаВывода); - + КонецПроцедуры Функция НоваяНастройкаСпособаВывода(Знач НовыйУровень, Знач ЗаданЯвно) - + НастройкаСпособаВывода = Новый Структура("Уровень, ЗаданЯвно, ВерсияAPI", НовыйУровень, ЗаданЯвно, Неопределено); Возврат НастройкаСпособаВывода; diff --git a/tests/logos-test.os b/tests/logos-test.os index d7d39b2..a7035fd 100644 --- a/tests/logos-test.os +++ b/tests/logos-test.os @@ -1,4 +1,4 @@ -#Использовать ".." +#Использовать ".." #Использовать asserts #Использовать tempfiles @@ -43,6 +43,7 @@ МассивТестов.Добавить("Тест_ДолженВывестиВЛогПростуюСтрокуБезПараметров"); МассивТестов.Добавить("Тест_ДолженВывестиВЛогПростуюСтрокуСПустымПараметром"); МассивТестов.Добавить("Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода"); + МассивТестов.Добавить("Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода_Отладка"); МассивТестов.Добавить("Тест_ДолженПроверитьСменуУровняСпособаВыводаПриПереустановкеУровняЛога"); МассивТестов.Добавить("Тест_ДолженПроверитьДобавлениеИмениЛогаДляУровняОтладка"); МассивТестов.Добавить("Тест_ДолженПроверитьОтсутствиеСменыЯвноЗаданногоУровняСпособаВыводаПриПереустановкеУровняЛога"); @@ -62,7 +63,7 @@ ПеремСредыУровняЛогаСохр = ПолучитьПеременнуюСреды("LOGOS_LEVEL"); УстановитьПеременнуюСреды("LOGOS_CONFIG", ""); УстановитьПеременнуюСреды("LOGOS_LEVEL", ""); - + КонецПроцедуры Процедура ПослеЗапускаТеста() Экспорт @@ -101,6 +102,7 @@ Утверждения.ПроверитьРавенство(Тип("ВыводЛогаВФайл"), ТипЗнч(ВФайл)); ВыводЛогаВКонсоль = Новый ВыводЛогаВКонсоль(); + Утверждения.ПроверитьРавенство(Тип("ВыводЛогаВКонсоль"), ТипЗнч(ВыводЛогаВКонсоль)); КонецПроцедуры @@ -233,7 +235,7 @@ КонецПроцедуры Процедура Тест_ДолженВывестиВЛогПростуюСтрокуБезПараметров() Экспорт - + ДобавитьСебяКакОбработчикаВывода(); Лог.УстановитьУровень(УровниЛога.Информация); Лог.Информация("Привет"); @@ -242,16 +244,16 @@ КонецПроцедуры Процедура Тест_ДолженВывестиВЛогПростуюСтрокуСПустымПараметром() Экспорт - + ДобавитьСебяКакОбработчикаВывода(); Лог.УстановитьУровень(УровниЛога.Информация); Лог.Информация("Привет <%1>", Неопределено); Утверждения.ПроверитьРавенство("ИНФОРМАЦИЯ - Привет <%1>", мСообщенияЛога[0]); КонецПроцедуры - + Процедура ДобавитьСебяКакОбработчикаВывода(Знач НовыйУровень = Неопределено) - + мСообщенияЛога = Новый Массив; Лог.ДобавитьСпособВывода(ЭтотОбъект, НовыйУровень); @@ -277,7 +279,7 @@ КонецПроцедуры Процедура Тест_ДолженПрочитатьНастройкиЛогированияИзФайла() Экспорт - + ФайлНастроек = ВременныеФайлы.НовоеИмяФайла("cfg"); ЗаписьТекста = Новый ЗаписьТекста(ФайлНастроек); @@ -299,7 +301,7 @@ НастройкиЛогаОтладки = Настройки.Получить("debuglog"); Ожидаем.Что(НастройкиЛогаОтладки.Уровень).Равно(УровниЛога.Отладка); Ожидаем.Что(НастройкиЛогаОтладки.СпособыВывода).ИмеетДлину(1); - + ОписаниеАппендера = НастройкиЛогаОтладки.СпособыВывода["debugfile"]; Ожидаем.Что(ОписаниеАппендера.Класс).Равно("ВыводЛогаВФайл"); Ожидаем.Что(ОписаниеАппендера.Уровень).Равно(УровниЛога.Предупреждение); @@ -309,7 +311,7 @@ КонецПроцедуры Процедура Тест_ДолженПрочитатьНастройкиЛогированияИзПеременнойСреды() Экспорт - + УстановитьПеременнуюСреды("LOGOS_CONFIG", "logger.errlog=ERROR;logger.debuglog=DEBUG, debugfile;appender.debugfile=ВыводЛогаВФайл;appender.debugfile.level=WARN;appender.debugfile.file=/tmp/logostestdebug;appender.debugfile.anotherprop=hello world"); Логирование.ОбновитьНастройки(); @@ -327,7 +329,7 @@ НастройкиЛогаОтладки = Настройки.Получить("debuglog"); Ожидаем.Что(НастройкиЛогаОтладки.Уровень).Равно(УровниЛога.Отладка); Ожидаем.Что(НастройкиЛогаОтладки.СпособыВывода).ИмеетДлину(1); - + ОписаниеАппендера = НастройкиЛогаОтладки.СпособыВывода["debugfile"]; Ожидаем.Что(ОписаниеАппендера.Класс).Равно("ВыводЛогаВФайл"); Ожидаем.Что(ОписаниеАппендера.Уровень).Равно(УровниЛога.Предупреждение); @@ -337,7 +339,7 @@ КонецПроцедуры Процедура Тест_ДолженПроверитьЧтоКорневойЛоггерВлияетНаВсеСоздаваемые() Экспорт - + УстановитьПеременнуюСреды("LOGOS_CONFIG", "logger.rootLogger=DEBUG"); Логирование.ОбновитьНастройки(); @@ -347,7 +349,7 @@ КонецПроцедуры Процедура Тест_ДолженПроверитьЧтоКорневойЛоггерВлияетНаВсеСоздаваемыеПриДругойПеременнойСреды() Экспорт - + УстановитьПеременнуюСреды("LOGOS_LEVEL", "DEBUG"); Логирование.ОбновитьНастройки(); @@ -357,7 +359,7 @@ КонецПроцедуры Процедура Тест_ДолженПроверитьЧтоКорневойЛоггерВлияетНаВсеСоздаваемыеПриДругойПеременнойСредыПриУровнеОшибка() Экспорт - + УстановитьПеременнуюСреды("LOGOS_LEVEL", "ERROR"); Логирование.ОбновитьНастройки(); @@ -367,7 +369,7 @@ КонецПроцедуры Процедура Тест_ДолженПроверитьПриоритетПеременныхСреды() Экспорт - + УстановитьПеременнуюСреды("LOGOS_LEVEL", "ERROR"); УстановитьПеременнуюСреды("LOGOS_CONFIG", "logger.rootLogger=DEBUG"); Логирование.ОбновитьНастройки(); @@ -378,7 +380,7 @@ КонецПроцедуры Процедура Тест_ДолженПроверитьЧтоТочечнаяНастройкаЗаменяетКорневую() Экспорт - + УстановитьПеременнуюСреды("LOGOS_CONFIG", "logger.rootLogger=DEBUG;logger.specificLogger=WARN"); Логирование.ОбновитьНастройки(); @@ -392,20 +394,20 @@ Процедура Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода() Экспорт Лог = Логирование.ПолучитьЛог("testlog"); Лог.УстановитьУровень(УровниЛога.Информация); - + ДобавитьСебяКакОбработчикаВывода(); - + Ожидаем.Что(Лог.УровеньСпособаВывода(ЭтотОбъект), "УровеньСпособаВывода(ЭтотОбъект)").Равно(УровниЛога.Информация); - + ВторойСпособВывода = ЗагрузитьСценарий(ОбъединитьПути(ПутьКТестам(), "fixtures", "appender-debug.os")); - - Лог.ДобавитьСпособВывода(ВторойСпособВывода, УровниЛога.ПРЕДУПРЕЖДЕНИЕ); + + Лог.ДобавитьСпособВывода(ВторойСпособВывода, УровниЛога.ПРЕДУПРЕЖДЕНИЕ); Ожидаем.Что(Лог.УровеньСпособаВывода(ВторойСпособВывода), "УровеньСпособаВывода(ВторойСпособВывода)").Равно(УровниЛога.ПРЕДУПРЕЖДЕНИЕ); - + Лог.Информация("Привет"); Лог.Предупреждение("Внимание"); Лог.Отладка("Отладка включена"); - + Ожидаем.Что(мСообщенияЛога).ИмеетДлину(2); Ожидаем.Что(мСообщенияЛога[0], "мСообщенияЛога[0]").Равно("ИНФОРМАЦИЯ - "+"Привет"); Ожидаем.Что(мСообщенияЛога[1], "мСообщенияЛога[1]").Равно("ПРЕДУПРЕЖДЕНИЕ - "+"Внимание"); @@ -415,20 +417,48 @@ Ожидаем.Что(Сообщения2[0], "ВторойСпособВывода 0").Равно("ПРЕДУПРЕЖДЕНИЕ - "+"Внимание"); КонецПроцедуры +Процедура Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода_Отладка() Экспорт + Лог = Логирование.ПолучитьЛог("testlog"); + Лог.УстановитьУровень(УровниЛога.Информация); + + ДобавитьСебяКакОбработчикаВывода(); + + Ожидаем.Что(Лог.УровеньСпособаВывода(ЭтотОбъект), "УровеньСпособаВывода(ЭтотОбъект)").Равно(УровниЛога.Информация); + + ВторойСпособВывода = ЗагрузитьСценарий(ОбъединитьПути(ПутьКТестам(), "fixtures", "appender-debug.os")); + + Лог.ДобавитьСпособВывода(ВторойСпособВывода, УровниЛога.Отладка); + Ожидаем.Что(Лог.УровеньСпособаВывода(ВторойСпособВывода), "УровеньСпособаВывода(ВторойСпособВывода)").Равно(УровниЛога.Отладка); + + Лог.Информация("Привет"); + Лог.Предупреждение("Внимание"); + Лог.Отладка("Отладка включена"); + + Ожидаем.Что(мСообщенияЛога[0], "мСообщенияЛога[0]").Равно("ИНФОРМАЦИЯ - "+"Привет"); + Ожидаем.Что(мСообщенияЛога[1], "мСообщенияЛога[1]").Равно("ПРЕДУПРЕЖДЕНИЕ - "+"Внимание"); + Ожидаем.Что(мСообщенияЛога).ИмеетДлину(2); + + Сообщения2 = ВторойСпособВывода.ПолучитьСообщения(); + Ожидаем.Что(Сообщения2[0], "ВторойСпособВывода 0").Равно("ИНФОРМАЦИЯ - "+"Привет"); + Ожидаем.Что(Сообщения2[1], "ВторойСпособВывода 1").Равно("ПРЕДУПРЕЖДЕНИЕ - "+"Внимание"); + Ожидаем.Что(Сообщения2[2], "ВторойСпособВывода 2").Равно("ОТЛАДКА - "+"Отладка включена"); + Ожидаем.Что(Сообщения2, "Сообщения2").ИмеетДлину(3); +КонецПроцедуры + Процедура Тест_ДолженПроверитьСменуУровняСпособаВыводаПриПереустановкеУровняЛога() Экспорт Лог = Логирование.ПолучитьЛог("testlog"); Лог.УстановитьУровень(УровниЛога.Информация); - + ДобавитьСебяКакОбработчикаВывода(); - + Ожидаем.Что(Лог.УровеньСпособаВывода(ЭтотОбъект), "УровеньСпособаВывода(ЭтотОбъект)").Равно(УровниЛога.Информация); - + Лог.УстановитьУровень(УровниЛога.Отладка); - + Лог.Информация("Привет"); Лог.Предупреждение("Внимание"); Лог.Отладка("Отладка включена"); - + Ожидаем.Что(мСообщенияЛога).ИмеетДлину(3); Ожидаем.Что(мСообщенияЛога[0], "мСообщенияЛога[0]").Равно("ИНФОРМАЦИЯ - [testlog] - " + "Привет"); Ожидаем.Что(мСообщенияЛога[1], "мСообщенияЛога[1]").Равно("ПРЕДУПРЕЖДЕНИЕ - [testlog] - " + "Внимание"); @@ -438,17 +468,17 @@ Процедура Тест_ДолженПроверитьДобавлениеИмениЛогаДляУровняОтладка() Экспорт Лог = Логирование.ПолучитьЛог("testlog"); Лог.УстановитьУровень(УровниЛога.Информация); - + ДобавитьСебяКакОбработчикаВывода(); - + Ожидаем.Что(Лог.УровеньСпособаВывода(ЭтотОбъект), "УровеньСпособаВывода(ЭтотОбъект)").Равно(УровниЛога.Информация); - + Лог.Информация("Привет"); - + Лог.УстановитьУровень(УровниЛога.Отладка); - + Лог.Информация("Привет2"); - + Ожидаем.Что(мСообщенияЛога).ИмеетДлину(2); Ожидаем.Что(мСообщенияЛога[0], "мСообщенияЛога[0]").Равно("ИНФОРМАЦИЯ - " + "Привет"); Ожидаем.Что(мСообщенияЛога[1], "мСообщенияЛога[1]").Равно("ИНФОРМАЦИЯ - [testlog] - " + "Привет2"); @@ -458,24 +488,24 @@ Процедура Тест_ДолженПроверитьОтсутствиеСменыЯвноЗаданногоУровняСпособаВыводаПриПереустановкеУровняЛога() Экспорт Лог = Логирование.ПолучитьЛог("testlog"); Лог.УстановитьУровень(УровниЛога.Информация); - + ДобавитьСебяКакОбработчикаВывода(УровниЛога.Информация); - + Ожидаем.Что(Лог.УровеньСпособаВывода(ЭтотОбъект), "УровеньСпособаВывода(ЭтотОбъект)").Равно(УровниЛога.Информация); - + Лог.УстановитьУровень(УровниЛога.Отладка); - + Лог.Информация("Привет"); Лог.Предупреждение("Внимание"); Лог.Отладка("Отладка включена"); - + Ожидаем.Что(мСообщенияЛога).ИмеетДлину(2); Ожидаем.Что(мСообщенияЛога[0], "мСообщенияЛога[0]").Равно("ИНФОРМАЦИЯ - [testlog] - " + "Привет"); Ожидаем.Что(мСообщенияЛога[1], "мСообщенияЛога[1]").Равно("ПРЕДУПРЕЖДЕНИЕ - [testlog] - " + "Внимание"); КонецПроцедуры Процедура Тест_ДолженПроверитьСокращениеИмениЛогаПриВыводеСообщения() Экспорт - + мСообщенияЛога = Новый Массив; ИменаЛогов = Новый Соответствие; @@ -487,34 +517,34 @@ ИменаЛогов.Вставить("oscript.lib.fake.very.very.very.very.very.very.very.very.long.path", "o.l.f.v.v.v.v.v.v.v.v.l.~h"); ИменаЛогов.Вставить("oscript.lib.fake.longpathinonenode", "o.l.f.~pathinonenode"); ИменаЛогов.Вставить("oscript.lib.fake.veryveryveryverylongpathinonenode", "o.l.f.~pathinonenode"); - + сч = 0; Для Каждого ДанныеЛога Из ИменаЛогов Цикл - + // given Лог = Логирование.ПолучитьЛог(ДанныеЛога.Ключ); Лог.УстановитьУровень(УровниЛога.Отладка); - + Лог.ДобавитьСпособВывода(ЭтотОбъект, УровниЛога.Отладка); - + // when Лог.Отладка("Привет"); - + // then Ожидаем.Что(мСообщенияЛога).ИмеетДлину(сч + 1); ОжидаемаяСтрока = СтрШаблон("ОТЛАДКА - [%1] - Привет", ДанныеЛога.Значение); Ожидаем.Что(мСообщенияЛога[сч], СтрШаблон("мСообщенияЛога[%1]", сч)).Равно(ОжидаемаяСтрока); - + сч = сч + 1; - + КонецЦикла; - + Ожидаем.Что(мСообщенияЛога).ИмеетДлину(ИменаЛогов.Количество()); - + // Закрытие логов Для Каждого ДанныеЛога Из ИменаЛогов Цикл Лог = Логирование.ПолучитьЛог(ДанныеЛога.Ключ); - + Лог.УдалитьСпособВывода(ЭтотОбъект); Логирование.ЗакрытьЛог(Лог); КонецЦикла; @@ -522,7 +552,7 @@ КонецПроцедуры Процедура Тест_ДолженПроверитьРаботуПередачуДополнительныхПолей() Экспорт - + Лог = Логирование.ПолучитьЛог("testlog"); Лог.УстановитьУровень(УровниЛога.Информация); ДобавитьСебяКакОбработчикаВывода(УровниЛога.Информация); @@ -533,9 +563,9 @@ ПолеДатаВремя = ТекущаяДата(); Лог.Поля("ДатаВремя", ПолеДатаВремя, "ПростоПоле", "ПростоПоле").Информация("Привет"); - + Лог.ПоляИз(Новый Структура("ДопПоле, ДопПоле2", "ДопПоле", "ДопПоле2")).Информация("Еще одно сообщение"); - + МассивСобытий = РаскладкаСПолями.мМассивСобытий; Ожидаем.Что(мСообщенияЛога).ИмеетДлину(2); @@ -549,7 +579,7 @@ КонецПроцедуры Процедура Тест_ДолженПроверитьРаботуПередачуВложенныхДополнительныхПолей() Экспорт - + Лог = Логирование.ПолучитьЛог("testlog"); Лог.УстановитьУровень(УровниЛога.Информация); ДобавитьСебяКакОбработчикаВывода(УровниЛога.Информация); @@ -558,7 +588,7 @@ Лог.УстановитьРаскладку(РаскладкаСПолями); ПолеДатаВремя = ТекущаяДата(); - + ЛоггерСПолями = Лог.ПоляИз(Новый Структура("ДопПоле, ДопПоле2", "ДопПоле", "ДопПоле2")); ЛоггерСПолями.Поля("ДатаВремя", ПолеДатаВремя, "ПростоПоле", "ПростоПоле").Информация("Привет"); @@ -572,13 +602,13 @@ Ожидаем.Что(МассивСобытий[0].ПолучитьДополнительныеПоля().Получить("ПростоПоле"), "МассивСобытий[0].ПолучитьДополнительныеПоля().Получить(""ПростоПоле"")").Равно("ПростоПоле"); Ожидаем.Что(МассивСобытий[0].ПолучитьДополнительныеПоля().Получить("ДопПоле"), "МассивСобытий[0].ПолучитьДополнительныеПоля().Получить(""ДопПоле"")").Равно("ДопПоле"); Ожидаем.Что(МассивСобытий[0].ПолучитьДополнительныеПоля().Получить("ДопПоле2"), "МассивСобытий[0].ПолучитьДополнительныеПоля().Получить(""ДопПоле2"")").Равно("ДопПоле2"); - + Ожидаем.Что(мСообщенияЛога[0], "мСообщенияЛога[0]").Равно(БазоваяСтрока); КонецПроцедуры Процедура Тест_ДолженПроверитьПолучениеСпискаЛоговПоФильтру() Экспорт - + Логирование.ПолучитьЛог("oscript.lib.arch"); Логирование.ПолучитьЛог("oscript.lib.arch.core"); Логирование.ПолучитьЛог("oscript.lib.arch.parse"); @@ -587,7 +617,7 @@ МассивЛогов = Логирование.СписокСозданныхЛогов("oscript.lib.arch"); Ожидаем.Что(МассивЛогов).ИмеетДлину(4); - + КонецПроцедуры Процедура Тест_ДолженПроверитьРаботуРаскладкиСAPIv1() Экспорт @@ -596,12 +626,12 @@ РаскладкаAPIv1 = ЗагрузитьСценарий(ОбъединитьПути(ПутьКТестам(), "fixtures", "v1-layout.os")); Лог.УстановитьРаскладку(РаскладкаAPIv1); - + ДобавитьСебяКакОбработчикаВывода(УровниЛога.Информация); - + Лог.Информация("Привет"); Лог.Предупреждение("Внимание"); - + Ожидаем.Что(мСообщенияЛога).ИмеетДлину(2); Ожидаем.Что(мСообщенияЛога[0], "мСообщенияЛога[0]").Равно("ИНФОРМАЦИЯ - " + "Привет"); Ожидаем.Что(мСообщенияЛога[1], "мСообщенияЛога[1]").Равно("ПРЕДУПРЕЖДЕНИЕ - " + "Внимание"); @@ -620,7 +650,7 @@ ПутьКТестам = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "tests"); Возврат ПутьКТестам; КонецФункции - + //////////////////////////// // Методы аппендера From 04876026ba5e63e8576586081941677acf6f6da8 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Tue, 29 Mar 2022 11:31:48 +0300 Subject: [PATCH 4/9] =?UTF-8?q?=D0=A2=D0=B5=D1=81=D1=82=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BF=D0=BE=D1=80?= =?UTF-8?q?=D1=8F=D0=B4=D0=BA=D0=B0=20=D0=B0=D0=BF=D0=BF=D0=B5=D0=BD=D0=B4?= =?UTF-8?q?=D0=B5=D1=80=D0=BE=D0=B2=20(=D0=9E=D1=82=D0=BB=D0=B0=D0=B4?= =?UTF-8?q?=D0=BA=D0=B0,=20=D0=98=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/logos-test.os | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/tests/logos-test.os b/tests/logos-test.os index a7035fd..fec4cba 100644 --- a/tests/logos-test.os +++ b/tests/logos-test.os @@ -43,7 +43,8 @@ МассивТестов.Добавить("Тест_ДолженВывестиВЛогПростуюСтрокуБезПараметров"); МассивТестов.Добавить("Тест_ДолженВывестиВЛогПростуюСтрокуСПустымПараметром"); МассивТестов.Добавить("Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода"); - МассивТестов.Добавить("Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода_Отладка"); + МассивТестов.Добавить("Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода_ИнформацияЗатемОтладка"); + МассивТестов.Добавить("Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода_ОтладкаЗатемИнформация"); МассивТестов.Добавить("Тест_ДолженПроверитьСменуУровняСпособаВыводаПриПереустановкеУровняЛога"); МассивТестов.Добавить("Тест_ДолженПроверитьДобавлениеИмениЛогаДляУровняОтладка"); МассивТестов.Добавить("Тест_ДолженПроверитьОтсутствиеСменыЯвноЗаданногоУровняСпособаВыводаПриПереустановкеУровняЛога"); @@ -417,7 +418,7 @@ Ожидаем.Что(Сообщения2[0], "ВторойСпособВывода 0").Равно("ПРЕДУПРЕЖДЕНИЕ - "+"Внимание"); КонецПроцедуры -Процедура Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода_Отладка() Экспорт +Процедура Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода_ИнформацияЗатемОтладка() Экспорт Лог = Логирование.ПолучитьЛог("testlog"); Лог.УстановитьУровень(УровниЛога.Информация); @@ -445,6 +446,36 @@ Ожидаем.Что(Сообщения2, "Сообщения2").ИмеетДлину(3); КонецПроцедуры +Процедура Тест_ДолженПроверитьНастройкуРазныхУровнейУРазныхСпособовВывода_ОтладкаЗатемИнформация() Экспорт + Лог = Логирование.ПолучитьЛог("testlog"); + Лог.УстановитьУровень(УровниЛога.Информация); + + ПутьФайла = ОбъединитьПути(ПутьКТестам(), "fixtures", "appender-debug.os"); + ПервыйСпособВывода = ЗагрузитьСценарий(ПутьФайла); + ВторойСпособВывода = ЗагрузитьСценарий(ПутьФайла); + + Лог.ДобавитьСпособВывода(ПервыйСпособВывода, УровниЛога.Отладка); + Ожидаем.Что(Лог.УровеньСпособаВывода(ПервыйСпособВывода), "УровеньСпособаВывода(ПервыйСпособВывода)").Равно(УровниЛога.Отладка); + + Лог.ДобавитьСпособВывода(ВторойСпособВывода, УровниЛога.Информация); + Ожидаем.Что(Лог.УровеньСпособаВывода(ВторойСпособВывода), "УровеньСпособаВывода(ВторойСпособВывода)").Равно(УровниЛога.Информация); + + Лог.Информация("Привет"); + Лог.Предупреждение("Внимание"); + Лог.Отладка("Отладка включена"); + + Сообщения1 = ПервыйСпособВывода.ПолучитьСообщения(); + Ожидаем.Что(Сообщения1[0], "ПервыйСпособВывода 0").Равно("ИНФОРМАЦИЯ - "+"Привет"); + Ожидаем.Что(Сообщения1[1], "ПервыйСпособВывода 1").Равно("ПРЕДУПРЕЖДЕНИЕ - "+"Внимание"); + Ожидаем.Что(Сообщения1[2], "ПервыйСпособВывода 2").Равно("ОТЛАДКА - "+"Отладка включена"); + Ожидаем.Что(Сообщения1, "Сообщения1").ИмеетДлину(3); + + Сообщения2 = ВторойСпособВывода.ПолучитьСообщения(); + Ожидаем.Что(Сообщения2[0], "ВторойСпособВывода 0").Равно("ИНФОРМАЦИЯ - "+"Привет"); + Ожидаем.Что(Сообщения2[1], "ВторойСпособВывода 1").Равно("ПРЕДУПРЕЖДЕНИЕ - "+"Внимание"); + Ожидаем.Что(Сообщения2, "Сообщения2").ИмеетДлину(2); +КонецПроцедуры + Процедура Тест_ДолженПроверитьСменуУровняСпособаВыводаПриПереустановкеУровняЛога() Экспорт Лог = Логирование.ПолучитьЛог("testlog"); Лог.УстановитьУровень(УровниЛога.Информация); From 2e2b48020d5ce514198af8bed816273b728e3b31 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Tue, 29 Mar 2022 14:32:48 +0300 Subject: [PATCH 5/9] =?UTF-8?q?=D0=BA=D0=B5=D1=88=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80?= =?UTF-8?q?=D0=B0=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0=20=D1=81=D0=BE?= =?UTF-8?q?=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D0=BB=D0=BE=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/levels.os | 41 +++++++++++++++++++++++++++-------- src/log.os | 60 ++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 80 insertions(+), 21 deletions(-) diff --git a/src/levels.os b/src/levels.os index 6003147..781cef4 100644 --- a/src/levels.os +++ b/src/levels.os @@ -15,20 +15,31 @@ Возврат мНаименованиеУровней[Уровень]; КонецФункции +// Вернуть все возможнные уровни +// +// Возвращаемое значение: +// ФиксированнаяСтруктура - результат +// * Ключ - Строка - имя уровня, Отладка, Информация и т.п. +// * Ключ - Число - показатель уровня. У Отладка 0 (мин), у Отключить 5 (макс) +// +Функция Уровни() Экспорт + Возврат Новый ФиксированнаяСтруктура(мУровниПриоритета); +КонецФункции ////////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ // Процедура Инициализация() - + ИнициализироватьУровни(); ИнициализироватьНаименованияУровней(); - + КонецПроцедуры Процедура ИнициализироватьУровни() - + + // мУровниПриоритета = СоздатьУровниСПриоритетами(); мУровниПриоритета = Новый Структура; мУровниПриоритета.Вставить("Отладка" , 0); мУровниПриоритета.Вставить("Информация" , 1); @@ -36,17 +47,29 @@ мУровниПриоритета.Вставить("Ошибка" , 3); мУровниПриоритета.Вставить("КритичнаяОшибка", 4); мУровниПриоритета.Вставить("Отключить" , 5); - - мТекущийУровень = мУровниПриоритета.Информация; - + + //мТекущийУровень = мУровниПриоритета.Информация; + Для Каждого КлючИЗначение Из мУровниПриоритета Цикл ЭтотОбъект[КлючИЗначение.Ключ] = КлючИЗначение.Значение; КонецЦикла; - + КонецПроцедуры +// Функция СоздатьУровниСПриоритетами() + +// Результат = Новый Структура; +// Результат.Вставить("Отладка" , 0); +// Результат.Вставить("Информация" , 1); +// Результат.Вставить("Предупреждение" , 2); +// Результат.Вставить("Ошибка" , 3); +// Результат.Вставить("КритичнаяОшибка", 4); +// Результат.Вставить("Отключить" , 5); + +// Возврат Результат; +// КонецФункции Процедура ИнициализироватьНаименованияУровней() - + мНаименованиеУровней = Новый Соответствие; мНаименованиеУровней.Вставить(мУровниПриоритета.Отладка , "ОТЛАДКА"); мНаименованиеУровней.Вставить(мУровниПриоритета.Информация , "ИНФОРМАЦИЯ"); @@ -57,4 +80,4 @@ КонецПроцедуры -Инициализация(); \ No newline at end of file +Инициализация(); diff --git a/src/log.os b/src/log.os index 3b51929..b35c5d7 100644 --- a/src/log.os +++ b/src/log.os @@ -9,6 +9,7 @@ Перем мСпособыВывода; Перем мСпособВыводаЗаданВручную; Перем мУровниАппендеров; +Перем НастройкаВыводаСообщений; Перем мИдентификатор; Перем мРаскладкаСообщения; @@ -117,12 +118,14 @@ КонецПроцедуры Процедура УстановитьУровень(Знач Уровень) Экспорт - Если Уровень < 0 или Уровень > УровниЛога.Отключить Тогда + Если Уровень < 0 Или Уровень > УровниЛога.Отключить Тогда ВызватьИсключение "Неверное значение аргумента 'Уровень'"; КонецЕсли; мТекущийУровень = Уровень; + МинимальныйУровень = Уровень; + Если ЗначениеЗаполнено(мУровниАппендеров) Тогда Для каждого КлючЗначение Из мУровниАппендеров Цикл СпособВывода = КлючЗначение.Ключ; @@ -130,9 +133,16 @@ Если Не НастройкаСпособаВывода.ЗаданЯвно Тогда НастройкаСпособаВывода.Уровень = Уровень; КонецЕсли; + + Если НастройкаСпособаВывода.Уровень < Уровень Тогда + МинимальныйУровень = НастройкаСпособаВывода.Уровень; + КонецЕсли; КонецЦикла; + КонецЕсли; + НастройкаВыводаСообщений = ЗаполнитьНастройкуВыводаСообщений(МинимальныйУровень); + Для каждого ВложенныйЛог Из мВложенныеЛоги Цикл ВложенныйЛог.УстановитьУровень(Уровень); КонецЦикла; @@ -183,6 +193,8 @@ Если НовыйУровеньСпособаВывода <> Неопределено Тогда НовыйУровень = НовыйУровеньСпособаВывода; ЗаданЯвно = Истина; + + НастройкаВыводаСообщений = УточнитьНастройкуВыводаСообщенийДляНовогоУровня(НовыйУровень); Иначе НовыйУровень = Уровень(); ЗаданЯвно = Ложь; @@ -312,18 +324,8 @@ Знач Параметр4 = Неопределено, Знач Параметр5 = Неопределено, Знач Параметр6 = Неопределено, Знач Параметр7 = Неопределено, Знач Параметр8 = Неопределено, Знач Параметр9 = Неопределено) Экспорт - ВыводитьСообщение = УровеньСообщения >= Уровень(); - Если НЕ ВыводитьСообщение Тогда + ВыводитьСообщение = НастройкаВыводаСообщений[УровеньСообщения]; - Для Каждого СпособВывода Из мСпособыВывода Цикл - НастройкаАппендера = мУровниАппендеров[СпособВывода]; - УровеньСпособаВывода = НастройкаАппендера.Уровень; - Если УровеньСпособаВывода = Неопределено Или УровеньСообщения >= УровеньСпособаВывода Тогда - ВыводитьСообщение = Истина; - Прервать; - КонецЕсли; - КонецЦикла; - КонецЕсли; Если Не ВыводитьСообщение Тогда Возврат; КонецЕсли; @@ -401,6 +403,7 @@ мВложенныеЛоги = Новый Массив(); мИдентификатор = Новый УникальныйИдентификатор; мДополнительныеПоляЛога = Новый Соответствие(); + НастройкаВыводаСообщений = НоваяНастройкаВыводаСообщений(); УстановитьУровень(УровниЛога.Информация); ИнициализироватьСпособыВывода(); @@ -424,6 +427,39 @@ КонецПроцедуры +Функция НоваяНастройкаВыводаСообщений() + Результат = Новый Соответствие; + Для каждого КлючЗначение Из УровниЛога.Уровни() Цикл + Результат.Вставить(КлючЗначение.Значение, Ложь); + КонецЦикла; + Возврат Результат; +КонецФункции + +Функция ЗаполнитьНастройкуВыводаСообщений(Знач МинимальныйУровень) + Результат = Новый Соответствие; + Для каждого КлючЗначение Из НастройкаВыводаСообщений Цикл + УровеньФильтра = КлючЗначение.Ключ; + РазрешенВыводСообщений = УровеньФильтра >= МинимальныйУровень; + Результат.Вставить(УровеньФильтра, РазрешенВыводСообщений); + КонецЦикла; + Возврат Результат; +КонецФункции + +Функция УточнитьНастройкуВыводаСообщенийДляНовогоУровня(Знач НовыйУровень) + Результат = Новый Соответствие; + Для каждого КлючЗначение Из НастройкаВыводаСообщений Цикл + УровеньФильтра = КлючЗначение.Ключ; + Если НовыйУровень <= УровеньФильтра Тогда + РазрешенВыводСообщений = Истина; + Иначе + РазрешенВыводСообщений = КлючЗначение.Значение; + КонецЕсли; + Результат.Вставить(УровеньФильтра, РазрешенВыводСообщений); + КонецЦикла; + + Возврат Результат; +КонецФункции + Функция НоваяНастройкаСпособаВывода(Знач НовыйУровень, Знач ЗаданЯвно) НастройкаСпособаВывода = Новый Структура("Уровень, ЗаданЯвно, ВерсияAPI", НовыйУровень, ЗаданЯвно, Неопределено); From f0011edfe8f20d4573759960eea9073f35c04a99 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Tue, 29 Mar 2022 14:34:33 +0300 Subject: [PATCH 6/9] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D1=88=D0=B5=D0=BB?= =?UTF-8?q?=20=D0=BA=20=D0=BC=D0=B0=D1=81=D1=81=D0=B8=D0=B2=D1=83=20=D0=B2?= =?UTF-8?q?=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=BF=D0=B5=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D1=82=D1=81=D1=82=D0=B2=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/log.os | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/src/log.os b/src/log.os index b35c5d7..ec77f0c 100644 --- a/src/log.os +++ b/src/log.os @@ -141,7 +141,7 @@ КонецЕсли; - НастройкаВыводаСообщений = ЗаполнитьНастройкуВыводаСообщений(МинимальныйУровень); + ЗаполнитьНастройкуВыводаСообщений(МинимальныйУровень); Для каждого ВложенныйЛог Из мВложенныеЛоги Цикл ВложенныйЛог.УстановитьУровень(Уровень); @@ -194,7 +194,7 @@ НовыйУровень = НовыйУровеньСпособаВывода; ЗаданЯвно = Истина; - НастройкаВыводаСообщений = УточнитьНастройкуВыводаСообщенийДляНовогоУровня(НовыйУровень); + УточнитьНастройкуВыводаСообщенийДляНовогоУровня(НовыйУровень); Иначе НовыйУровень = Уровень(); ЗаданЯвно = Ложь; @@ -428,37 +428,32 @@ КонецПроцедуры Функция НоваяНастройкаВыводаСообщений() - Результат = Новый Соответствие; - Для каждого КлючЗначение Из УровниЛога.Уровни() Цикл - Результат.Вставить(КлючЗначение.Значение, Ложь); + Уровни = УровниЛога.Уровни(); + Результат = Новый Массив(Уровни.Количество()); + Для каждого КлючЗначение Из Уровни Цикл + Результат[КлючЗначение.Значение] = Ложь; КонецЦикла; Возврат Результат; КонецФункции -Функция ЗаполнитьНастройкуВыводаСообщений(Знач МинимальныйУровень) - Результат = Новый Соответствие; - Для каждого КлючЗначение Из НастройкаВыводаСообщений Цикл - УровеньФильтра = КлючЗначение.Ключ; +Процедура ЗаполнитьНастройкуВыводаСообщений(Знач МинимальныйУровень) + Для УровеньФильтра = 0 По НастройкаВыводаСообщений.ВГраница() Цикл РазрешенВыводСообщений = УровеньФильтра >= МинимальныйУровень; - Результат.Вставить(УровеньФильтра, РазрешенВыводСообщений); + НастройкаВыводаСообщений[УровеньФильтра] = РазрешенВыводСообщений; КонецЦикла; - Возврат Результат; -КонецФункции +КонецПроцедуры -Функция УточнитьНастройкуВыводаСообщенийДляНовогоУровня(Знач НовыйУровень) - Результат = Новый Соответствие; - Для каждого КлючЗначение Из НастройкаВыводаСообщений Цикл - УровеньФильтра = КлючЗначение.Ключ; +Процедура УточнитьНастройкуВыводаСообщенийДляНовогоУровня(Знач НовыйУровень) + Для УровеньФильтра = 0 По НастройкаВыводаСообщений.ВГраница() Цикл Если НовыйУровень <= УровеньФильтра Тогда РазрешенВыводСообщений = Истина; Иначе - РазрешенВыводСообщений = КлючЗначение.Значение; + РазрешенВыводСообщений = НастройкаВыводаСообщений[УровеньФильтра]; КонецЕсли; - Результат.Вставить(УровеньФильтра, РазрешенВыводСообщений); + НастройкаВыводаСообщений[УровеньФильтра] = РазрешенВыводСообщений; КонецЦикла; - Возврат Результат; -КонецФункции +КонецПроцедуры Функция НоваяНастройкаСпособаВывода(Знач НовыйУровень, Знач ЗаданЯвно) From 3f3d90269dfd3c4fc85dad0560bd69c99fa8b6fb Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Tue, 29 Mar 2022 14:36:19 +0300 Subject: [PATCH 7/9] =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D1=83=D0=B6=D0=BD=D1=8B=D0=B5=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B8=20=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/levels.os | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/levels.os b/src/levels.os index 781cef4..41ee7dc 100644 --- a/src/levels.os +++ b/src/levels.os @@ -39,7 +39,6 @@ Процедура ИнициализироватьУровни() - // мУровниПриоритета = СоздатьУровниСПриоритетами(); мУровниПриоритета = Новый Структура; мУровниПриоритета.Вставить("Отладка" , 0); мУровниПриоритета.Вставить("Информация" , 1); @@ -48,26 +47,12 @@ мУровниПриоритета.Вставить("КритичнаяОшибка", 4); мУровниПриоритета.Вставить("Отключить" , 5); - //мТекущийУровень = мУровниПриоритета.Информация; - Для Каждого КлючИЗначение Из мУровниПриоритета Цикл ЭтотОбъект[КлючИЗначение.Ключ] = КлючИЗначение.Значение; КонецЦикла; КонецПроцедуры -// Функция СоздатьУровниСПриоритетами() - -// Результат = Новый Структура; -// Результат.Вставить("Отладка" , 0); -// Результат.Вставить("Информация" , 1); -// Результат.Вставить("Предупреждение" , 2); -// Результат.Вставить("Ошибка" , 3); -// Результат.Вставить("КритичнаяОшибка", 4); -// Результат.Вставить("Отключить" , 5); - -// Возврат Результат; -// КонецФункции Процедура ИнициализироватьНаименованияУровней() мНаименованиеУровней = Новый Соответствие; From 05a13f67eef03e98df16ec3a3e938e4d86fbba33 Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Tue, 29 Mar 2022 16:52:33 +0300 Subject: [PATCH 8/9] =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D1=83=20OneScr?= =?UTF-8?q?ipt=201.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit т.к. сам продукт работает в старой версии --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index 8c6956e..6885d7c 100644 --- a/packagedef +++ b/packagedef @@ -1,6 +1,6 @@  Описание.Имя("logos") - .Версия("1.7.0") + .Версия("1.3.0") .ЗависитОт("asserts", "0.4.0") .ВключитьФайл("src") .ВключитьФайл("tests") From 2f31c04a28478064da73c1d1692606f3d8b6bb6a Mon Sep 17 00:00:00 2001 From: Artur Ayukhanov Date: Tue, 29 Mar 2022 16:54:30 +0300 Subject: [PATCH 9/9] =?UTF-8?q?=D0=A3=D0=B2=D0=B5=D0=BB=D0=B8=D1=87=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BD=D0=BE=D0=BC=D0=B5=D1=80=20=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=81=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packagedef | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packagedef b/packagedef index 6885d7c..75b4490 100644 --- a/packagedef +++ b/packagedef @@ -1,6 +1,6 @@  Описание.Имя("logos") - .Версия("1.3.0") + .Версия("1.4.0") .ЗависитОт("asserts", "0.4.0") .ВключитьФайл("src") .ВключитьФайл("tests")