diff --git a/Src/Logics/Services/console_log_service.py b/Src/Logics/Services/console_log_service.py new file mode 100644 index 0000000..6977c5b --- /dev/null +++ b/Src/Logics/Services/console_log_service.py @@ -0,0 +1,65 @@ +from Src.Logics.Services.service import service +from Src.Models.event_type import event_type +from Src.Storage.storage import storage +from Src.errors import error_proxy +from Src.exceptions import exception_proxy +from Src.Logics.convert_factory import convert_factory +from Src.Logics.storage_observer import storage_observer + +import os +import json +from datetime import datetime + +# +# Сервис логирования +# +class console_log_service(service): + + __storage: storage = None + __item:error_proxy = None + + def __init__(self, data: list = None) -> None: + super().__init__(data) + self.__storage = storage() + self.__data = [] + storage_observer.append(self) + + @property + def item(self) -> error_proxy: + return self.__item + + @item.setter + def item(self, value: error_proxy): + exception_proxy.validate(value, error_proxy) + self.__item = value + + def __observe_print_log(self): + """ + Вывести лог в консоль + """ + data = self.__data + period = datetime.now().strftime('%Y-%m-%d') + factory = convert_factory() + data = factory.serialize( data ) + json_text = json.dumps(data, sort_keys = True, indent = 4, ensure_ascii = False) + print(f"{period}: {json_text}") + + + + + + def handle_event(self, handle_type: str ): + """ + Обработать событие + Args: + handle_type (str): Ключ + """ + super().handle_event(handle_type) + + # Добавить запись в лог + if handle_type == event_type.write_log() and self.__item is not None: + self.__data.append(self.__item) + + # Вывести лог в консоль + if handle_type == event_type.save_log(): + self.__observe_print_log() \ No newline at end of file diff --git a/Src/Logics/start_factory.py b/Src/Logics/start_factory.py index abbcd94..91d01cf 100644 --- a/Src/Logics/start_factory.py +++ b/Src/Logics/start_factory.py @@ -12,6 +12,7 @@ from Src.Storage.storage import storage from Src.exceptions import exception_proxy, operation_exception, argument_exception from Src.Logics.Services.log_service import log_service +from Src.Logics.Services.console_log_service import console_log_service # # Класс для обработки данных. Начало работы приложения @@ -27,6 +28,7 @@ def __init__(self, _options: settings, self.__oprions = _options self.__storage = _storage log_service() + console_log_service diff --git a/Src/errors.py b/Src/errors.py index 7faf3ca..abcad4e 100644 --- a/Src/errors.py +++ b/Src/errors.py @@ -137,11 +137,15 @@ def write_log(message: str, log_type:str = "INFO" ): Сформировать сообщение для записи лога """ observer_item = storage_observer.get( storage_observer .log_service_key() ) + observer_item_console = storage_observer.get( storage_observer .console_log_service_key() ) + if observer_item is not None: item = error_proxy() item.error = message item.log_type = log_type observer_item.item = item + if observer_item_console is not None: + observer_item_console.item = item storage_observer.raise_event( "write_log" ) \ No newline at end of file diff --git a/Tst/convert_test.py b/Tst/convert_test.py index a305b7c..31c2a5f 100644 --- a/Tst/convert_test.py +++ b/Tst/convert_test.py @@ -5,6 +5,7 @@ from Src.Storage.storage import storage from Src.settings_manager import settings_manager from Src.Logics.Services.log_service import log_service +from Src.Logics.Services.console_log_service import console_log_service import unittest import json @@ -14,6 +15,7 @@ class convert_test(unittest.TestCase): def __init__(self, methodName: str = "runTest") -> None: super().__init__(methodName) log_service() + console_log_service() # # Проверить загрузку одного элемента номенклатуры в объект diff --git a/Tst/error_test.py b/Tst/error_test.py index cc0f107..9ff30eb 100644 --- a/Tst/error_test.py +++ b/Tst/error_test.py @@ -1,5 +1,6 @@ from Src.errors import error_proxy from Src.Logics.Services.log_service import log_service +from Src.Logics.Services.console_log_service import console_log_service import unittest diff --git a/Tst/factory_test.py b/Tst/factory_test.py index 4604684..9fb034d 100644 --- a/Tst/factory_test.py +++ b/Tst/factory_test.py @@ -5,6 +5,7 @@ from Src.Logics.Services.log_service import log_service import unittest +from Src.Logics.Services.console_log_service import console_log_service # # Набор автотестов для проверки работы фабричного метода @@ -14,6 +15,7 @@ class factory_test(unittest.TestCase): def __init__(self, methodName: str = "runTest") -> None: super().__init__(methodName) log_service() + console_log_service() # # Проверить метод storage_keys в хранилище diff --git a/Tst/nomenclature_test.py b/Tst/nomenclature_test.py index d49e9ae..bdf84c7 100644 --- a/Tst/nomenclature_test.py +++ b/Tst/nomenclature_test.py @@ -3,6 +3,7 @@ from Src.Models.unit_model import unit_model from Src.exceptions import argument_exception from Src.Logics.Services.log_service import log_service +from Src.Logics.Services.console_log_service import console_log_service import unittest @@ -14,6 +15,7 @@ class nomenclature_test(unittest.TestCase): def __init__(self, methodName: str = "runTest") -> None: super().__init__(methodName) log_service() + console_log_service() # # Проверить создание новой карточки номенклатуры diff --git a/Tst/processing_test.py b/Tst/processing_test.py index fcb50fe..010139d 100644 --- a/Tst/processing_test.py +++ b/Tst/processing_test.py @@ -8,6 +8,7 @@ from Src.Models.storage_model import storage_model from Src.Models.unit_model import unit_model from Src.Logics.Services.log_service import log_service +from Src.Logics.Services.console_log_service import console_log_service # # Набор содульных тестов для проверки процессов обработки данных @@ -17,6 +18,8 @@ class processing_test(unittest.TestCase): def __init__(self, methodName: str = "runTest") -> None: super().__init__(methodName) log_service() + console_log_service() + # # Проверить работу фабрики процессов diff --git a/Tst/prototype_test.py b/Tst/prototype_test.py index 6a1b86b..26c489f 100644 --- a/Tst/prototype_test.py +++ b/Tst/prototype_test.py @@ -7,12 +7,14 @@ from datetime import datetime import unittest +from Src.Logics.Services.console_log_service import console_log_service class prototype_test(unittest.TestCase): def __init__(self, methodName: str = "runTest") -> None: super().__init__(methodName) log_service() + console_log_service() # # Проверить метод filter_by_period diff --git a/Tst/reporting_test.py b/Tst/reporting_test.py index ee47247..65c32cb 100644 --- a/Tst/reporting_test.py +++ b/Tst/reporting_test.py @@ -10,6 +10,7 @@ from Src.Logics.start_factory import start_factory from Src.settings import settings from Src.Logics.Services.log_service import log_service +from Src.Logics.Services.console_log_service import console_log_service class reporting_test(unittest.TestCase): @@ -17,6 +18,7 @@ class reporting_test(unittest.TestCase): def __init__(self, methodName: str = "runTest") -> None: super().__init__(methodName) log_service() + console_log_service() def test_check_json_reporting_build(self): # Подготовка diff --git a/Tst/service_test.py b/Tst/service_test.py index 3826abf..ce87ac4 100644 --- a/Tst/service_test.py +++ b/Tst/service_test.py @@ -13,12 +13,14 @@ from datetime import datetime import unittest import uuid +from Src.Logics.Services.console_log_service import console_log_service class service_test(unittest.TestCase): def __init__(self, methodName: str = "runTest") -> None: super().__init__(methodName) log_service() + console_log_service() # # Тест на удаление номенклатуры diff --git a/Tst/settings_test.py b/Tst/settings_test.py index 4232b8a..abf8c2a 100644 --- a/Tst/settings_test.py +++ b/Tst/settings_test.py @@ -6,6 +6,7 @@ import unittest from datetime import datetime +from Src.Logics.Services.console_log_service import console_log_service # @@ -16,6 +17,7 @@ class settings_test(unittest.TestCase): def __init__(self, methodName: str = "runTest") -> None: super().__init__(methodName) log_service() + console_log_service() # # Проверить действие наблюдателя при изменении даты блокировки diff --git a/Tst/storage_test.py b/Tst/storage_test.py index 538205f..be86272 100644 --- a/Tst/storage_test.py +++ b/Tst/storage_test.py @@ -2,12 +2,14 @@ from Src.settings_manager import settings_manager from Src.Logics.start_factory import start_factory from Src.Logics.Services.log_service import log_service +from Src.Logics.Services.console_log_service import console_log_service class storage_test(unittest.TestCase): def __init__(self, methodName: str = "runTest") -> None: super().__init__(methodName) log_service() + console_log_service() # # Проверить сохранение данных