From d5cf594bfe91ff22175c6e344b23b95cdbcc8a3c Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 16 Aug 2015 00:12:18 +0200 Subject: Core/Logging: Refactored appender creation to allow using logging without mysql dependency in tools (future task) --- src/server/shared/Logging/Log.h | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'src/server/shared/Logging/Log.h') diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h index ab7b2169ed2..a15bb4ad485 100644 --- a/src/server/shared/Logging/Log.h +++ b/src/server/shared/Logging/Log.h @@ -44,19 +44,13 @@ class Log public: - static Log* instance(boost::asio::io_service* ioService = nullptr) + static Log* instance() { static Log instance; - - if (ioService != nullptr) - { - instance._ioService = ioService; - instance._strand = new boost::asio::strand(*ioService); - } - return &instance; } + void Initialize(boost::asio::io_service* ioService); void LoadFromConfig(); void Close(); bool ShouldLog(std::string const& type, LogLevel level) const; @@ -88,6 +82,18 @@ class Log void SetRealmId(uint32 id); + template + void RegisterAppender() + { + using Index = typename AppenderImpl::TypeIndex; + auto itr = appenderFactory.find(Index::value); + ASSERT(itr == appenderFactory.end()); + appenderFactory[Index::value] = &CreateAppender; + } + + std::string const& GetLogsDir() const { return m_logsDir; } + std::string const& GetLogsTimestamp() const { return m_logsTimestamp; } + private: static std::string GetTimestampStr(); void write(std::unique_ptr&& msg) const; @@ -100,6 +106,7 @@ class Log void ReadAppendersFromConfig(); void ReadLoggersFromConfig(); + AppenderCreatorMap appenderFactory; AppenderMap appenders; LoggerMap loggers; uint8 AppenderId; -- cgit v1.2.3