From 884f23f79e4a7b36d602a5c08b8123885e55f43a Mon Sep 17 00:00:00 2001 From: josh Date: Fri, 4 Apr 2025 14:29:31 -0400 Subject: [PATCH] Add OnLog event to CompoundLogger --- include/jlog/Logger.hpp | 18 ++++++++++-------- include/jlog/Timestamp.hpp | 14 +++++++------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/include/jlog/Logger.hpp b/include/jlog/Logger.hpp index d693170..edbd762 100644 --- a/include/jlog/Logger.hpp +++ b/include/jlog/Logger.hpp @@ -1,18 +1,18 @@ #pragma once -#include "fstream" -#include "iostream" -#include "source_location" -#include "Token.hpp" -#include "Timestamp.hpp" - +#include +#include +#include +#include +#include +#include namespace jlog { class Logger { public: + Logger(std::ostream &stream = std::cout) : os{stream} {}; public: - void - operator()(const std::string &message, const std::source_location &location = std::source_location::current(), + void operator()(const std::string &message, const std::source_location &location = std::source_location::current(), const Timestamp &ts = Timestamp()) { if (Enable) Log(message, location, ts); @@ -127,6 +127,7 @@ namespace jlog { class CompoundLogger : protected ConsoleLogger, protected FileLogger { public: + Event OnLog; explicit CompoundLogger(const std::string &context, std::ofstream &file) : ConsoleLogger(context), FileLogger(context, file) {}; public: @@ -137,6 +138,7 @@ namespace jlog { virtual void Log(const std::string &message, const std::source_location &location = std::source_location::current(), const Timestamp &ts = Timestamp()) { + OnLog.Invoke(message, messageColor); ConsoleLogger::Log(message, location, ts); FileLogger::Log(message, location, ts); } diff --git a/include/jlog/Timestamp.hpp b/include/jlog/Timestamp.hpp index 6911bb5..c8df3c8 100644 --- a/include/jlog/Timestamp.hpp +++ b/include/jlog/Timestamp.hpp @@ -7,13 +7,13 @@ namespace jlog { public: Timestamp(); public: - std::chrono::year Year() {return y;}; - std::chrono::month Month() {return m;}; - std::chrono::day Day() {return d;} - std::chrono::duration> Hour() {return h;}; - std::chrono::duration> Minute() {return M;}; - std::chrono::duration Second() {return s;}; - std::chrono::duration> Millisecond() {return ms;}; + [[nodiscard]] std::chrono::year Year() const {return y;}; + [[nodiscard]] std::chrono::month Month() const {return m;}; + [[nodiscard]] std::chrono::day Day() const {return d;} + [[nodiscard]] std::chrono::duration> Hour() const {return h;}; + [[nodiscard]] std::chrono::duration> Minute() const {return M;}; + [[nodiscard]] std::chrono::duration Second() const {return s;}; + [[nodiscard]] std::chrono::duration> Millisecond() const {return ms;}; private: std::chrono::year y; std::chrono::month m;