feat(app): add threaded logger worker

This commit is contained in:
user
2026-07-21 13:46:06 +04:00
parent ee5fec311c
commit 569208c271
3 changed files with 28 additions and 6 deletions
+5 -1
View File
@@ -1,4 +1,5 @@
CXXFLAGS := \ CXXFLAGS := \
-I$(ROOT_DIR)/app/include \
-I$(ROOT_DIR)/core/include \ -I$(ROOT_DIR)/core/include \
-I$(ROOT_DIR)/logger/include -I$(ROOT_DIR)/logger/include
@@ -9,7 +10,10 @@ LDLIBS += -llogger
TARGET := $(BUILD_DIR)/logger_app TARGET := $(BUILD_DIR)/logger_app
SRC := src/main.cpp SRC := \
src/main.cpp \
src/message_queue.cpp \
src/logger_worker.cpp
.PHONY: all clean .PHONY: all clean
+7 -1
View File
@@ -1,5 +1,7 @@
#include "logger_worker.hpp" #include "logger_worker.hpp"
#include <iostream>
namespace app { namespace app {
LoggerWorker::LoggerWorker(logger::Logger &logger, MessageQueue &queue) LoggerWorker::LoggerWorker(logger::Logger &logger, MessageQueue &queue)
@@ -21,7 +23,11 @@ void LoggerWorker::stop() {
void LoggerWorker::process() { void LoggerWorker::process() {
while (auto message = queue_.pop()) { while (auto message = queue_.pop()) {
logger_.writeMessage(message->level, message->message); auto status = logger_.writeMessage(message->level, message->message);
if (!status.isSuccess()) {
std::cerr << "Logger error: " << status.getError() << '\n';
}
} }
} }
+16 -4
View File
@@ -1,17 +1,29 @@
#include <iostream> #include <iostream>
#include <string>
#include "logger.hpp" #include "logger.hpp"
#include "logger_worker.hpp"
#include "message_queue.hpp"
int main() { int main() {
logger::Logger logger("app.log", logger::LogLevel::info()); logger::Logger logger("app.log", logger::LogLevel::info());
auto status = logger.writeMessage("Hello from shared library"); app::MessageQueue queue;
app::LoggerWorker worker(logger, queue);
if (!status.isSuccess()) { worker.start();
std::cerr << status.getError() << '\n';
return 1; std::string message;
while (std::getline(std::cin, message)) {
if (message == "exit") {
break;
}
queue.push({logger::LogLevel::info(), message});
} }
worker.stop();
return 0; return 0;
} }