diff options
author | Spp <spp@jorge.gr> | 2013-11-08 10:29:51 +0100 |
---|---|---|
committer | Spp <spp@jorge.gr> | 2013-11-08 10:29:51 +0100 |
commit | 990e4c78514e3a3f8e8905cf22dfacbb0c4fba67 (patch) | |
tree | aa9140f37cedf8a445608f3849bcc566c2cf0a51 /src/server/shared/Logging/Log.h | |
parent | 184fe092c3a7d37eb3983ec11e3f5d3a9f6640fa (diff) | |
parent | 16a51e328a12b8eafb7ff2c18806ca9aef6b23a2 (diff) |
Merge branch 'master' into 4.3.4
Conflicts:
src/server/game/AI/EventAI/CreatureEventAI.h
src/server/game/AI/EventAI/CreatureEventAIMgr.h
src/server/game/Achievements/AchievementMgr.cpp
src/server/game/DungeonFinding/LFGMgr.h
src/server/game/Entities/Creature/Creature.h
src/server/game/Entities/Object/Updates/UpdateData.cpp
src/server/game/Entities/Player/Player.cpp
src/server/game/Entities/Player/Player.h
src/server/game/Grids/Notifiers/GridNotifiers.h
src/server/game/Grids/ObjectGridLoader.h
src/server/game/Spells/SpellInfo.h
src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
src/server/scripts/EasternKingdoms/zone_burning_steppes.cpp
src/server/scripts/EasternKingdoms/zone_hinterlands.cpp
src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp
src/server/scripts/Kalimdor/zone_azshara.cpp
src/server/scripts/Kalimdor/zone_darkshore.cpp
src/server/scripts/Kalimdor/zone_desolace.cpp
src/server/scripts/Kalimdor/zone_mulgore.cpp
src/server/scripts/Kalimdor/zone_orgrimmar.cpp
src/server/scripts/Kalimdor/zone_stonetalon_mountains.cpp
src/server/scripts/Kalimdor/zone_tanaris.cpp
src/server/scripts/Kalimdor/zone_thousand_needles.cpp
src/tools/map_extractor/System.cpp
src/tools/map_extractor/mpq_libmpq.cpp
src/tools/map_extractor/mpq_libmpq04.h
src/tools/vmap4_extractor/loadlib/loadlib.h
src/tools/vmap4_extractor/mpq_libmpq.cpp
src/tools/vmap4_extractor/mpq_libmpq04.h
Diffstat (limited to 'src/server/shared/Logging/Log.h')
-rw-r--r-- | src/server/shared/Logging/Log.h | 111 |
1 files changed, 88 insertions, 23 deletions
diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h index e35e4f3ab7f..81daee02503 100644 --- a/src/server/shared/Logging/Log.h +++ b/src/server/shared/Logging/Log.h @@ -28,11 +28,60 @@ #include <string> #include <ace/Singleton.h> +// TODO: Replace all defines in core +#define LOG_FILTER_ACHIEVEMENTSYS "achievement" +#define LOG_FILTER_AUCTIONHOUSE "auctionHouse" +#define LOG_FILTER_ARENAS "bg.arena" +#define LOG_FILTER_BATTLEFIELD "bg.battlefield" +#define LOG_FILTER_BATTLEGROUND "bg.battleground" +#define LOG_FILTER_PLAYER_CHATLOG "chat.log" +#define LOG_FILTER_CALENDAR "calendar" +#define LOG_FILTER_CHATSYS "chat.system" +#define LOG_FILTER_CHEAT "cheat" +#define LOG_FILTER_REMOTECOMMAND "commands.ra" +#define LOG_FILTER_GMCOMMAND "commands.gm" +#define LOG_FILTER_CONDITIONSYS "condition" +#define LOG_FILTER_PETS "entities.pet" +#define LOG_FILTER_CHARACTER "entities.player.character" +#define LOG_FILTER_PLAYER_DUMP "entities.player.dump" +#define LOG_FILTER_PLAYER "entities.player" +#define LOG_FILTER_PLAYER_ITEMS "entities.player.items" +#define LOG_FILTER_PLAYER_LOADING "entities.player.loading" +#define LOG_FILTER_PLAYER_SKILLS "entities.player.skills" +#define LOG_FILTER_TRANSPORTS "entities.transport" +#define LOG_FILTER_UNITS "entities.unit" +#define LOG_FILTER_VEHICLES "entities.vehicle" +#define LOG_FILTER_GAMEEVENTS "gameevent" +#define LOG_FILTER_GUILD "guild" +#define LOG_FILTER_LFG "lfg" +#define LOG_FILTER_LOOT "loot" +#define LOG_FILTER_MAPSCRIPTS "maps.script" +#define LOG_FILTER_MAPS "maps" +#define LOG_FILTER_GENERAL "misc" +#define LOG_FILTER_NETWORKIO "network" +#define LOG_FILTER_OPCODES "network.opcode" +#define LOG_FILTER_SOAP "network.soap" +#define LOG_FILTER_OUTDOORPVP "outdoorpvp" +#define LOG_FILTER_POOLSYS "pool" +#define LOG_FILTER_RBAC "rbac" +#define LOG_FILTER_TSCR "scripts" +#define LOG_FILTER_DATABASE_AI "scripts.ai" +#define LOG_FILTER_SERVER_LOADING "server.loading" +#define LOG_FILTER_AUTHSERVER "server.authserver" +#define LOG_FILTER_WORLDSERVER "server.worldserver" +#define LOG_FILTER_SPELLS_AURAS "spells" +#define LOG_FILTER_SQL_DEV "sql.dev" +#define LOG_FILTER_SQL_DRIVER "sql.driver" +#define LOG_FILTER_SQL "sql.sql" +#define LOG_FILTER_WARDEN "warden" + +#define LOGGER_ROOT "root" + class Log { friend class ACE_Singleton<Log, ACE_Thread_Mutex>; - typedef UNORDERED_MAP<uint8, Logger> LoggerMap; + typedef UNORDERED_MAP<std::string, Logger> LoggerMap; private: Log(); @@ -41,15 +90,15 @@ class Log public: void LoadFromConfig(); void Close(); - bool ShouldLog(LogFilterType type, LogLevel level) const; + bool ShouldLog(std::string const& type, LogLevel level) const; bool SetLogLevel(std::string const& name, char const* level, bool isLogger = true); - void outTrace(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); - void outDebug(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); - void outInfo(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); - void outWarn(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); - void outError(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); - void outFatal(LogFilterType f, char const* str, ...) ATTR_PRINTF(3, 4); + void outTrace(std::string const& f, char const* str, ...) ATTR_PRINTF(3, 4); + void outDebug(std::string const& f, char const* str, ...) ATTR_PRINTF(3, 4); + void outInfo(std::string const& f, char const* str, ...) ATTR_PRINTF(3, 4); + void outWarn(std::string const& f, char const* str, ...) ATTR_PRINTF(3, 4); + void outError(std::string const& f, char const* str, ...) ATTR_PRINTF(3, 4); + void outFatal(std::string const& f, char const* str, ...) ATTR_PRINTF(3, 4); void outCommand(uint32 account, const char * str, ...) ATTR_PRINTF(3, 4); void outCharDump(char const* str, uint32 account_id, uint32 guid, char const* name); @@ -58,14 +107,14 @@ class Log void SetRealmId(uint32 id); private: - void vlog(LogFilterType f, LogLevel level, char const* str, va_list argptr); - void write(LogMessage* msg); + void vlog(std::string const& f, LogLevel level, char const* str, va_list argptr); + void write(LogMessage* msg) const; - Logger* GetLoggerByType(LogFilterType filter); + Logger const* GetLoggerByType(std::string const& type) const; Appender* GetAppenderByName(std::string const& name); uint8 NextAppenderId(); - void CreateAppenderFromConfig(const char* name); - void CreateLoggerFromConfig(const char* name); + void CreateAppenderFromConfig(std::string const& name); + void CreateLoggerFromConfig(std::string const& name); void ReadAppendersFromConfig(); void ReadLoggersFromConfig(); @@ -79,19 +128,35 @@ class Log LogWorker* worker; }; -inline bool Log::ShouldLog(LogFilterType type, LogLevel level) const +inline Logger const* Log::GetLoggerByType(std::string const& type) const { - LoggerMap::const_iterator it = loggers.find(uint8(type)); + LoggerMap::const_iterator it = loggers.find(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 &(it->second); + + if (type == LOGGER_ROOT) + return NULL; + + std::string parentLogger = LOGGER_ROOT; + size_t found = type.find_last_of("."); + if (found != std::string::npos) + parentLogger = type.substr(0,found); + + return GetLoggerByType(parentLogger); +} + +inline bool Log::ShouldLog(std::string const& type, LogLevel level) const +{ + // TODO: Use cache to store "Type.sub1.sub2": "Type" equivalence, should + // Speed up in cases where requesting "Type.sub1.sub2" but only configured + // Logger "Type" + + Logger const* logger = GetLoggerByType(type); + if (!logger) return false; + + LogLevel logLevel = logger->getLogLevel(); + return logLevel != LOG_LEVEL_DISABLED && logLevel <= level; } #define sLog ACE_Singleton<Log, ACE_Thread_Mutex>::instance() |