Update logger.md
This commit is contained in:
parent
654c1b031a
commit
a68ecf5856
@ -8,7 +8,7 @@
|
|||||||
<img src="https://github.com/Lisoveliy/SVET/blob/master/docs/LoggerIOArch.drawio.svg?raw=true" alt="Logger IO Arch"/>
|
<img src="https://github.com/Lisoveliy/SVET/blob/master/docs/LoggerIOArch.drawio.svg?raw=true" alt="Logger IO Arch"/>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
Можно заметить что все сервисы внутри ядра SVET передают в логгер информацию для удобства отладки и программирования. Это поведение можно настроить(например отключить логи ядра полностью) при создании класса ```SVET``` с помощью ```SVETBuilder```. Так же, можно заметить что логгер находится за пределами ядра и является интерфейсом взаимодействия с пользователем. Это означает что его можно использовать для своих собственных целей даже если логирование самого ядра отключено. Для этого у класса ```Logger``` есть публичные методы для логирования.
|
Можно заметить что все сервисы внутри ядра **SVET** передают в логгер информацию для удобства отладки и программирования. Это поведение можно настроить(например отключить логи ядра полностью) при создании класса ```SVET``` с помощью ```SVETBuilder```. Так же, можно заметить что логгер находится за пределами ядра и является интерфейсом взаимодействия с пользователем. Это означает что его можно использовать для своих собственных целей даже если логирование самого ядра отключено. Для этого у класса ```Logger``` есть публичные методы для логирования.
|
||||||
|
|
||||||
## Публичные методы:
|
## Публичные методы:
|
||||||
|
|
||||||
@ -63,3 +63,62 @@
|
|||||||
[ERROR] Core: Core changed!!! //Сообщение от ядра
|
[ERROR] Core: Core changed!!! //Сообщение от ядра
|
||||||
[ERROR]: Exception! //Если initiator не передан
|
[ERROR]: Exception! //Если initiator не передан
|
||||||
[ERROR] main.cpp: Hello world! //Если initiator передан и не равен nullptr
|
[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