From 8e725b96c3b855e735babad7aa8f990d13827206 Mon Sep 17 00:00:00 2001 From: Lisoveliy <1986developer@gmail.com> Date: Thu, 17 Oct 2024 17:49:26 +0300 Subject: [PATCH] feat: added ServiceLogger for service logging --- program/SVET/.vscode/settings.json | 53 ++++++++++++++++++- program/SVET/lib/SVET/Logger/Logger.cpp | 4 ++ program/SVET/lib/SVET/Logger/Logger.h | 4 ++ .../SVET/lib/SVET/Logger/ServiceLogger.cpp | 28 ++++++++++ program/SVET/lib/SVET/Logger/ServiceLogger.h | 32 +++++++++++ program/SVET/lib/SVET/SVET.cpp | 2 +- program/SVET/lib/SVET/SVET.h | 2 +- program/SVET/src/main.cpp | 14 ++--- 8 files changed, 130 insertions(+), 9 deletions(-) create mode 100644 program/SVET/lib/SVET/Logger/ServiceLogger.cpp create mode 100644 program/SVET/lib/SVET/Logger/ServiceLogger.h diff --git a/program/SVET/.vscode/settings.json b/program/SVET/.vscode/settings.json index d8cb326..64e220b 100644 --- a/program/SVET/.vscode/settings.json +++ b/program/SVET/.vscode/settings.json @@ -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" } } \ No newline at end of file diff --git a/program/SVET/lib/SVET/Logger/Logger.cpp b/program/SVET/lib/SVET/Logger/Logger.cpp index cb8251d..00e3b23 100644 --- a/program/SVET/lib/SVET/Logger/Logger.cpp +++ b/program/SVET/lib/SVET/Logger/Logger.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 Logger::GetServiceLogger(char *initiator){ + return std::make_unique(ServiceLogger(this, initiator)); } \ No newline at end of file diff --git a/program/SVET/lib/SVET/Logger/Logger.h b/program/SVET/lib/SVET/Logger/Logger.h index fcefb27..a2882a2 100644 --- a/program/SVET/lib/SVET/Logger/Logger.h +++ b/program/SVET/lib/SVET/Logger/Logger.h @@ -3,6 +3,8 @@ #include #include "SerialColor.h" #include "MessageType.h" +#include "ServiceLogger.h" +#include /* * 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 GetServiceLogger(char *initiator); }; \ No newline at end of file diff --git a/program/SVET/lib/SVET/Logger/ServiceLogger.cpp b/program/SVET/lib/SVET/Logger/ServiceLogger.cpp new file mode 100644 index 0000000..7770537 --- /dev/null +++ b/program/SVET/lib/SVET/Logger/ServiceLogger.cpp @@ -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); +} \ No newline at end of file diff --git a/program/SVET/lib/SVET/Logger/ServiceLogger.h b/program/SVET/lib/SVET/Logger/ServiceLogger.h new file mode 100644 index 0000000..e35a64e --- /dev/null +++ b/program/SVET/lib/SVET/Logger/ServiceLogger.h @@ -0,0 +1,32 @@ +#pragma once + +#include +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); +}; \ No newline at end of file diff --git a/program/SVET/lib/SVET/SVET.cpp b/program/SVET/lib/SVET/SVET.cpp index 55501a4..ea36745 100644 --- a/program/SVET/lib/SVET/SVET.cpp +++ b/program/SVET/lib/SVET/SVET.cpp @@ -14,7 +14,7 @@ bool SVET::Start() { // Setup logger auto loggerOptions = &Builder->BuildLoggerOptions; - this->SLogger = std::make_unique(loggerOptions->BaudRate, + this->MLogger = std::make_unique(loggerOptions->BaudRate, loggerOptions->CoreLoggerLevel, loggerOptions->UserLoggerLevel, loggerOptions->UseColor); diff --git a/program/SVET/lib/SVET/SVET.h b/program/SVET/lib/SVET/SVET.h index e60c8d2..2f5092d 100644 --- a/program/SVET/lib/SVET/SVET.h +++ b/program/SVET/lib/SVET/SVET.h @@ -15,7 +15,7 @@ class SVET SVETBuilder *Builder; public: - std::unique_ptr SLogger; + std::unique_ptr MLogger; /// @brief Method that must be included to setup() on main.cpp /// @return true if SVET was started bool Start(); diff --git a/program/SVET/src/main.cpp b/program/SVET/src/main.cpp index 21e6053..a596264 100644 --- a/program/SVET/src/main.cpp +++ b/program/SVET/src/main.cpp @@ -1,22 +1,24 @@ #include #include #include "SVET.h" +#include "Logger/ServiceLogger.h" std::unique_ptr svet; -Logger *logger; +std::unique_ptr logger; +int counter = 0; void setup() { auto builder = SVETBuilder::Setup()->SetLogger(LoggerOptions()); svet = std::make_unique(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(); } \ No newline at end of file