Core/Logging: Fix crash when trying to log a message while config is being reloaded

Closes #7878
This commit is contained in:
Spp
2012-09-26 13:42:53 +02:00
parent 1b2a010a70
commit f0f97ab851
+7 -4
View File
@@ -281,9 +281,12 @@ void Log::vlog(LogFilterType filter, LogLevel level, char const* str, va_list ar
void Log::write(LogMessage* msg) void Log::write(LogMessage* msg)
{ {
msg->text.append("\n"); if (worker)
Logger* logger = GetLoggerByType(msg->type); {
worker->enqueue(new LogOperation(logger, msg)); msg->text.append("\n");
Logger* logger = GetLoggerByType(msg->type);
worker->enqueue(new LogOperation(logger, msg));
}
} }
std::string Log::GetTimestampStr() std::string Log::GetTimestampStr()
@@ -481,6 +484,7 @@ void Log::Close()
void Log::LoadFromConfig() void Log::LoadFromConfig()
{ {
Close(); Close();
worker = new LogWorker();
AppenderId = 0; AppenderId = 0;
m_logsDir = ConfigMgr::GetStringDefault("LogsDir", ""); m_logsDir = ConfigMgr::GetStringDefault("LogsDir", "");
if (!m_logsDir.empty()) if (!m_logsDir.empty())
@@ -488,5 +492,4 @@ void Log::LoadFromConfig()
m_logsDir.push_back('/'); m_logsDir.push_back('/');
ReadAppendersFromConfig(); ReadAppendersFromConfig();
ReadLoggersFromConfig(); ReadLoggersFromConfig();
worker = new LogWorker();
} }