#pragma once #include #include #include #include #include "LogLevel.h" namespace L2Bot::Domain::Logger { class LogChannel { public: LogChannel(const std::vector levels) : m_Levels(levels) {}; virtual ~LogChannel() = default; void SendToChannel(const std::wstring& logEntry) { DoSendToChannel(logEntry); } const bool IsAppropriateLevel(const LogLevel level) const { return m_Levels.size() == 0 || std::find(m_Levels.begin(), m_Levels.end(), level) != m_Levels.end(); } protected: virtual void DoSendToChannel(const std::wstring& logEntry) = 0; const std::wstring GetCurrentDateTime() const { time_t rawTime = std::time(nullptr); struct tm timeinfo; localtime_s(&timeinfo, &rawTime); std::wstringstream oss; oss << "[" << std::put_time(&timeinfo, L"%Y-%m-%d %H:%M:%S") << "]"; return oss.str(); } private: const std::vector m_Levels; }; }