aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2012-08-06 09:30:47 +0200
committerSpp <spp@jorge.gr>2012-08-06 09:30:47 +0200
commit5746b688fa156f2ea3a72a8f655042c24bdae8c4 (patch)
treeec7dfd8dde5c331d539926c60f91a9c38950f323 /src
parent483fb42306b82d92ea4c32ce016dbdd7fa91381d (diff)
Core/Logging: Reload Logging options when .reload config is used
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/World/World.cpp1
-rwxr-xr-xsrc/server/shared/Logging/Log.cpp26
-rwxr-xr-xsrc/server/shared/Logging/Log.h1
3 files changed, 17 insertions, 11 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 3a13f48d807..ab3b7150089 100755
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -398,6 +398,7 @@ void World::LoadConfigSettings(bool reload)
sLog->outError(LOG_FILTER_GENERAL, "World settings reload fail: can't read settings from %s.", ConfigMgr::GetFilename().c_str());
return;
}
+ sLog->LoadFromConfig();
}
///- Read the player limit and the Message of the day from the config file
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
index 0bf8bcded86..cce670922f4 100755
--- a/src/server/shared/Logging/Log.cpp
+++ b/src/server/shared/Logging/Log.cpp
@@ -32,18 +32,8 @@
Log::Log()
{
SetRealmID(0);
- AppenderId = 0;
- /// Common log files data
- m_logsDir = ConfigMgr::GetStringDefault("LogsDir", "");
- if (!m_logsDir.empty())
- if ((m_logsDir.at(m_logsDir.length() - 1) != '/') && (m_logsDir.at(m_logsDir.length() - 1) != '\\'))
- m_logsDir.push_back('/');
-
m_logsTimestamp = "_" + GetTimestampStr();
-
- ReadAppendersFromConfig();
- ReadLoggersFromConfig();
- worker = new LogWorker();
+ LoadFromConfig();
}
Log::~Log()
@@ -426,6 +416,20 @@ void Log::Close()
it->second = NULL;
}
appenders.clear();
+ loggers.clear();
delete worker;
worker = NULL;
}
+
+void Log::LoadFromConfig()
+{
+ Close();
+ AppenderId = 0;
+ m_logsDir = ConfigMgr::GetStringDefault("LogsDir", "");
+ if (!m_logsDir.empty())
+ if ((m_logsDir.at(m_logsDir.length() - 1) != '/') && (m_logsDir.at(m_logsDir.length() - 1) != '\\'))
+ m_logsDir.push_back('/');
+ ReadAppendersFromConfig();
+ ReadLoggersFromConfig();
+ worker = new LogWorker();
+}
diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h
index 5e2b7972dc8..7b0e8cd381b 100755
--- a/src/server/shared/Logging/Log.h
+++ b/src/server/shared/Logging/Log.h
@@ -40,6 +40,7 @@ class Log
~Log();
public:
+ void LoadFromConfig();
void Close();
bool ShouldLog(LogFilterType type, LogLevel level) const;
bool SetLogLevel(std::string const& name, char const* level, bool isLogger = true);