aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Logging/Log.h
diff options
context:
space:
mode:
authorSpp <spp@jorge.gr>2013-05-21 09:55:09 +0200
committerSpp <spp@jorge.gr>2013-05-21 09:55:09 +0200
commit86afccc8ff7f54d8ebf28473bc2799dc7e039083 (patch)
treeb5519c8b3400cb5ca7a1b5496494361285812cd4 /src/server/shared/Logging/Log.h
parent1b6fb2b6959f504d9e33d2326691cf43a04690d2 (diff)
parentd1677b2db08f71a5bddedd9659cc5a66f325f47f (diff)
Merge branch 'master' into 4.3.4 (Only the Logging System One)
Conflicts: src/server/game/AI/EventAI/CreatureEventAI.cpp src/server/game/AI/EventAI/CreatureEventAIMgr.cpp src/server/game/Achievements/AchievementMgr.cpp src/server/game/Battlegrounds/ArenaTeam.cpp src/server/game/Battlegrounds/BattlegroundMgr.cpp src/server/game/DataStores/DBCStores.cpp src/server/game/Entities/DynamicObject/DynamicObject.cpp src/server/game/Entities/Object/Object.cpp src/server/game/Entities/Object/Updates/UpdateData.cpp src/server/game/Entities/Player/Player.cpp src/server/game/Entities/Unit/Unit.cpp src/server/game/Globals/ObjectMgr.cpp src/server/game/Guilds/Guild.cpp src/server/game/Guilds/GuildMgr.cpp src/server/game/Handlers/AuctionHouseHandler.cpp src/server/game/Handlers/BattleGroundHandler.cpp src/server/game/Handlers/BattlefieldHandler.cpp src/server/game/Handlers/CalendarHandler.cpp src/server/game/Handlers/CharacterHandler.cpp src/server/game/Handlers/ChatHandler.cpp src/server/game/Handlers/GroupHandler.cpp src/server/game/Handlers/GuildHandler.cpp src/server/game/Handlers/ItemHandler.cpp src/server/game/Handlers/MailHandler.cpp src/server/game/Handlers/MiscHandler.cpp src/server/game/Handlers/MovementHandler.cpp src/server/game/Handlers/NPCHandler.cpp src/server/game/Handlers/PetitionsHandler.cpp src/server/game/Handlers/QuestHandler.cpp src/server/game/Handlers/SpellHandler.cpp src/server/game/Handlers/TradeHandler.cpp src/server/game/Instances/InstanceScript.cpp src/server/game/Server/WorldSession.cpp src/server/game/Server/WorldSocket.cpp src/server/game/Spells/Auras/SpellAuraEffects.cpp src/server/game/Spells/Auras/SpellAuras.cpp src/server/game/Spells/SpellEffects.cpp src/server/game/Spells/SpellMgr.cpp src/server/game/Tools/PlayerDump.cpp src/server/game/World/World.cpp src/server/scripts/Commands/cs_modify.cpp src/server/scripts/Commands/cs_reload.cpp src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
Diffstat (limited to 'src/server/shared/Logging/Log.h')
-rw-r--r--src/server/shared/Logging/Log.h57
1 files changed, 53 insertions, 4 deletions
diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h
index 46aaea4bad1..d7612c76738 100644
--- a/src/server/shared/Logging/Log.h
+++ b/src/server/shared/Logging/Log.h
@@ -23,17 +23,16 @@
#include "Appender.h"
#include "LogWorker.h"
#include "Logger.h"
-
-#include <ace/Singleton.h>
+#include "Dynamic/UnorderedMap.h"
#include <string>
-#include <set>
+#include <ace/Singleton.h>
class Log
{
friend class ACE_Singleton<Log, ACE_Thread_Mutex>;
- typedef std::map<uint8, Logger> LoggerMap;
+ typedef UNORDERED_MAP<uint8, Logger> LoggerMap;
private:
Log();
@@ -80,6 +79,56 @@ class Log
LogWorker* worker;
};
+inline bool Log::ShouldLog(LogFilterType type, LogLevel level) const
+{
+ LoggerMap::const_iterator it = loggers.find(uint8(type));
+ if (it != loggers.end())
+ {
+ LogLevel logLevel = it->second.getLogLevel();
+ return logLevel != LOG_LEVEL_DISABLED && logLevel <= level;
+ }
+
+ if (type != LOG_FILTER_GENERAL)
+ return ShouldLog(LOG_FILTER_GENERAL, level);
+ else
+ return false;
+}
+
#define sLog ACE_Singleton<Log, ACE_Thread_Mutex>::instance()
+#if PLATFORM != PLATFORM_WINDOWS
+# define TC_LOG_MESSAGE_BODY(level__, call__, filterType__, ...) \
+ do { \
+ if (sLog->ShouldLog(filterType__, level__)) \
+ sLog->call__(filterType__, __VA_ARGS__); \
+ } while (0)
+#else
+# define TC_LOG_MESSAGE_BODY(level__, call__, filterType__, ...) \
+ __pragma(warning(push)) \
+ __pragma(warning(disable:4127)) \
+ do { \
+ if (sLog->ShouldLog(filterType__, level__)) \
+ sLog->call__(filterType__, __VA_ARGS__); \
+ } while (0) \
+ __pragma(warning(pop))
+#endif
+
+#define TC_LOG_TRACE(filterType__, ...) \
+ TC_LOG_MESSAGE_BODY(LOG_LEVEL_TRACE, outTrace, filterType__, __VA_ARGS__)
+
+#define TC_LOG_DEBUG(filterType__, ...) \
+ TC_LOG_MESSAGE_BODY(LOG_LEVEL_DEBUG, outDebug, filterType__, __VA_ARGS__)
+
+#define TC_LOG_INFO(filterType__, ...) \
+ TC_LOG_MESSAGE_BODY(LOG_LEVEL_INFO, outInfo, filterType__, __VA_ARGS__)
+
+#define TC_LOG_WARN(filterType__, ...) \
+ TC_LOG_MESSAGE_BODY(LOG_LEVEL_WARN, outWarn, filterType__, __VA_ARGS__)
+
+#define TC_LOG_ERROR(filterType__, ...) \
+ TC_LOG_MESSAGE_BODY(LOG_LEVEL_ERROR, outError, filterType__, __VA_ARGS__)
+
+#define TC_LOG_FATAL(filterType__, ...) \
+ TC_LOG_MESSAGE_BODY(LOG_LEVEL_FATAL, outFatal, filterType__, __VA_ARGS__)
+
#endif