feat: added ServiceLogger for service logging

This commit is contained in:
Pavel-Savely Savianok 2024-10-17 17:49:26 +03:00
parent 2d05897f84
commit 8e725b96c3
8 changed files with 130 additions and 9 deletions

@ -1,5 +1,56 @@
{
"files.associations": {
"string": "cpp"
"string": "cpp",
"array": "cpp",
"string_view": "cpp",
"ranges": "cpp",
"atomic": "cpp",
"bit": "cpp",
"*.tcc": "cpp",
"cctype": "cpp",
"chrono": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"compare": "cpp",
"concepts": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"list": "cpp",
"map": "cpp",
"set": "cpp",
"unordered_map": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"ratio": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"initializer_list": "cpp",
"iosfwd": "cpp",
"limits": "cpp",
"new": "cpp",
"ostream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"cinttypes": "cpp",
"typeinfo": "cpp",
"variant": "cpp"
}
}

@ -85,4 +85,8 @@ void Logger::Warn(char *data, char *initiator)
void Logger::Error(char *data, char *initiator)
{
sendMessage(getMessage(MessageType::ERROR, data, initiator).c_str(), RED);
}
std::unique_ptr<ServiceLogger> Logger::GetServiceLogger(char *initiator){
return std::make_unique<ServiceLogger>(ServiceLogger(this, initiator));
}

@ -3,6 +3,8 @@
#include <string>
#include "SerialColor.h"
#include "MessageType.h"
#include "ServiceLogger.h"
#include <memory>
/*
* Definition of Logger instance.
* Writed on 14.06.2024 21:11
@ -49,4 +51,6 @@ public:
/// @param data Message. Example: "Error occured"
/// @param initiator Name of initiator. Example: "main.cpp"
void Error(char *data, char *initiator = nullptr);
std::unique_ptr<ServiceLogger> GetServiceLogger(char *initiator);
};

@ -0,0 +1,28 @@
#include "ServiceLogger.h"
#include "Logger.h"
/*
* Implementation of Service Logger instance. Docs on Logger.h
* Writed on 14.06.2024 21:11
* By Lisoveliy
*/
ServiceLogger::ServiceLogger(Logger *logger, char *initiator)
{
this->initiator = initiator;
this->mLogger = logger;
}
void ServiceLogger::Info(char *data)
{
this->mLogger->Info(data, initiator);
}
void ServiceLogger::Warn(char *data)
{
this->mLogger->Warn(data, initiator);
}
void ServiceLogger::Error(char *data)
{
this->mLogger->Error(data, initiator);
}

@ -0,0 +1,32 @@
#pragma once
#include <memory>
class Logger;
/*
* Definition of ServiceLogger instance.
* Writed on 17.10.2024 16:41
* By Lisoveliy
*/
class ServiceLogger
{
char *initiator;
Logger *mLogger;
public:
/// @brief Create ServiceLogger instance
/// @param initiator name of service
ServiceLogger(Logger *logger, char *initiator = nullptr);
/// @brief Log information
/// @param data Message. Example: "Hello world!"
void Info(char *data);
/// @brief Log Warning
/// @param data Message. Example: "Some happened"
void Warn(char *data);
/// @brief Log Error
/// @param data Message. Example: "Error occured"
void Error(char *data);
};

@ -14,7 +14,7 @@ bool SVET::Start()
{
// Setup logger
auto loggerOptions = &Builder->BuildLoggerOptions;
this->SLogger = std::make_unique<Logger>(loggerOptions->BaudRate,
this->MLogger = std::make_unique<Logger>(loggerOptions->BaudRate,
loggerOptions->CoreLoggerLevel,
loggerOptions->UserLoggerLevel,
loggerOptions->UseColor);

@ -15,7 +15,7 @@ class SVET
SVETBuilder *Builder;
public:
std::unique_ptr<Logger> SLogger;
std::unique_ptr<Logger> MLogger;
/// @brief Method that must be included to setup() on main.cpp
/// @return true if SVET was started
bool Start();

@ -1,22 +1,24 @@
#include <Arduino.h>
#include <memory>
#include "SVET.h"
#include "Logger/ServiceLogger.h"
std::unique_ptr<SVET> svet;
Logger *logger;
std::unique_ptr<ServiceLogger> logger;
int counter = 0;
void setup()
{
auto builder = SVETBuilder::Setup()->SetLogger(LoggerOptions());
svet = std::make_unique<SVET>(SVET(builder));
svet->Start();
logger = svet->SLogger.get();
logger = svet->MLogger->GetServiceLogger("main.cpp");
}
void loop()
{
delay(1000);
logger->Info("Hello INFO", "main.cpp");
logger->Warn("Hello WARN", "main.cpp");
logger->Error("Hello ERROR", "main.cpp");
delay(500);
auto strCounter = std::to_string(counter).c_str();
logger->Info((char*)strCounter);
counter++;
svet->Loop();
}