Merge branch 'master' of https://github.com/Lisoveliy/SVET
This commit is contained in:
commit
b71780efad
@ -8,7 +8,7 @@
|
||||
<img src="https://github.com/Lisoveliy/SVET/blob/master/docs/LoggerIOArch.drawio.svg?raw=true" alt="Logger IO Arch"/>
|
||||
</p>
|
||||
|
||||
Можно заметить что все сервисы внутри ядра SVET передают в логгер информацию для удобства отладки и программирования. Это поведение можно настроить(например отключить логи ядра полностью) при создании класса ```SVET``` с помощью ```SVETBuilder```. Так же, можно заметить что логгер находится за пределами ядра и является интерфейсом взаимодействия с пользователем. Это означает что его можно использовать для своих собственных целей даже если логирование самого ядра отключено. Для этого у класса ```Logger``` есть публичные методы для логирования.
|
||||
Можно заметить что все сервисы внутри ядра **SVET** передают в логгер информацию для удобства отладки и программирования. Это поведение можно настроить(например отключить логи ядра полностью) при создании класса ```SVET``` с помощью ```SVETBuilder```. Так же, можно заметить что логгер находится за пределами ядра и является интерфейсом взаимодействия с пользователем. Это означает что его можно использовать для своих собственных целей даже если логирование самого ядра отключено. Для этого у класса ```Logger``` есть публичные методы для логирования.
|
||||
|
||||
## Публичные методы:
|
||||
|
||||
@ -63,3 +63,62 @@
|
||||
[ERROR] Core: Core changed!!! //Сообщение от ядра
|
||||
[ERROR]: Exception! //Если initiator не передан
|
||||
[ERROR] main.cpp: Hello world! //Если initiator передан и не равен nullptr
|
||||
|
||||
## Создание Logger
|
||||
|
||||
Создание экземпляра ```Logger``` происходит в методе ```SVET::Start``` используя параметры указанные через ```LoggerOptions``` в методе ```SVETBuilder::SetLogger```. Вам обязательно необходимо установить параметры логгирования, в противном случае проект **не будет скомпилирован**.
|
||||
|
||||
### Пример получения Logger
|
||||
|
||||
std::unique_ptr<SVET> svet;
|
||||
Logger *logger;
|
||||
void setup()
|
||||
{
|
||||
auto builder = SVETBuilder::Setup()->SetLogger(LoggerOptions()); //Установка параметров логгера
|
||||
svet = std::make_unique<SVET>(SVET(builder));
|
||||
svet->Start();
|
||||
logger = svet->SLogger.get();
|
||||
}
|
||||
|
||||
В данном случае будут использованы параметры по умолчанию указанные в конструкторе ```LoggerOptions```
|
||||
|
||||
### Установка своих параметров
|
||||
|
||||
Конструктор ```LoggerOptions``` принимает в себя следующие параметры:
|
||||
|
||||
MessageType coreLoggerLevel,
|
||||
MessageType userLoggerLevel,
|
||||
bool useColor,
|
||||
short baudRate
|
||||
|
||||
Где
|
||||
|
||||
```coreLoggerLevel``` - указание уровня с которого будет производится логирование сообщений ядра
|
||||
|
||||
```userLoggerLevel``` - указание уровня с которого будет производится логирование сообщений разработчика
|
||||
|
||||
```useColor``` - указание вывода цветных сообщений
|
||||
|
||||
```baudRate``` - указание скорости работы Serial порта
|
||||
|
||||
В свою очередь ```MessageType``` является ```enum``` с следующими значениями:
|
||||
|
||||
INFO, - Вывод сообщений через методы Info, Warn, Error
|
||||
WARN, - Вывод сообщений через методы Warn, Error
|
||||
ERROR, - Вывод сообщений только через метод Error
|
||||
NONE - Отсутствие вывода
|
||||
|
||||
Таким образом можно управлять выводом **SVET** и выводом разработчика в зависимости от ситуации.
|
||||
|
||||
#### Отключение Logger
|
||||
|
||||
Если вам необходимо полностью перехватить работу с классом ```Serial```, вы можете отключить ```Logger``` и использовать ```Serial``` по своему назначению не боясь что кто-то вмешивается в его работу. Для этого необходимо установить параметры ```coreLoggerLevel``` и ```userLoggerLevel``` в значения ```NONE```. В этом случае ```Logger``` не будет выполнять комманду ```Serial.begin()``` и логгировать сообщения поступающие из ядра и от пользователя.
|
||||
|
||||
Пример:
|
||||
|
||||
auto builder = SVETBuilder::Setup()->SetLogger(LoggerOptions(NONE, NONE));
|
||||
|
||||
### Время жизни Logger
|
||||
Экземпляр класса ```Logger``` существует внутри обьекта ```SVET``` в качестве поля ```SLogger``` _(SvetLogger или ServiceLogger)_. Вам не нужно создавать ```Logger``` самостоятельно если вы планируете использовать платформу **SVET**.
|
||||
|
||||
```Logger``` является ```Singleton``` сервисом. Это сделано для того чтобы избежать излишнего расходования ресурсов микроконтроллера и не загружать его _"кучу"_. Экземпляр ```SLogger``` существует с момента выхода из метода ```SVET::Start``` до удаления объекта ```SVET``` (по сути при правильном использовании **SVET** можно считать что ```SLogger``` существует до конца выполнения программы).
|
||||
|
Loading…
x
Reference in New Issue
Block a user