aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Logging/Log.cpp
diff options
context:
space:
mode:
authorleak <leak@bitmx.net>2014-07-08 20:55:25 +0200
committerleak <leak@bitmx.net>2014-07-08 20:55:25 +0200
commitd1594998f80762fa58f64cf123f9bf9cb77036e4 (patch)
tree11b289988ddf931333c3b043c4b06692c07d0ce0 /src/server/shared/Logging/Log.cpp
parentc24bf2f0287fb004b5b231e2cfa7e0b7ebec3bec (diff)
Replaced the LogWorker thread with Boost ASIO
Diffstat (limited to 'src/server/shared/Logging/Log.cpp')
-rw-r--r--src/server/shared/Logging/Log.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
index 57d8797e61e..65cf930a634 100644
--- a/src/server/shared/Logging/Log.cpp
+++ b/src/server/shared/Logging/Log.cpp
@@ -29,7 +29,7 @@
#include <cstdio>
#include <sstream>
-Log::Log() : worker(NULL)
+Log::Log() : _ioService(nullptr), _strand(nullptr)
{
m_logsTimestamp = "_" + GetTimestampStr();
LoadFromConfig();
@@ -37,6 +37,7 @@ Log::Log() : worker(NULL)
Log::~Log()
{
+ delete _strand;
Close();
}
@@ -272,8 +273,13 @@ void Log::write(LogMessage* msg) const
Logger const* logger = GetLoggerByType(msg->type);
msg->text.append("\n");
- if (worker)
- worker->Enqueue(new LogOperation(logger, msg));
+ if (_ioService)
+ {
+ auto logOperation = std::shared_ptr<LogOperation>(new LogOperation(logger, msg));
+
+ _ioService->post(_strand->wrap([logOperation](){ logOperation->call(); }));
+
+ }
else
{
logger->write(*msg);
@@ -375,8 +381,6 @@ void Log::SetRealmId(uint32 id)
void Log::Close()
{
- delete worker;
- worker = NULL;
loggers.clear();
for (AppenderMap::iterator it = appenders.begin(); it != appenders.end(); ++it)
{
@@ -390,9 +394,6 @@ void Log::LoadFromConfig()
{
Close();
- if (sConfigMgr->GetBoolDefault("Log.Async.Enable", false))
- worker = new LogWorker();
-
AppenderId = 0;
m_logsDir = sConfigMgr->GetStringDefault("LogsDir", "");
if (!m_logsDir.empty())