diff options
author | Spp <spp@jorge.gr> | 2013-11-11 14:34:44 +0100 |
---|---|---|
committer | Spp <spp@jorge.gr> | 2013-11-11 14:35:16 +0100 |
commit | cd486622333c9d0c725e882d149fe8d4ad342e2a (patch) | |
tree | fee3c2d8bba1828c2577fc9feac89c021ee8be74 /src | |
parent | 79a2d6b7fc9e516435ff6e035ad869aad1cae876 (diff) |
Core/Logging: Minor changes
- Select stderr when writing ERROR and FATAL messages
- Simplify function defines
- Fix `logs` table structure with latest logging changes
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/shared/Logging/Appender.h | 2 | ||||
-rw-r--r-- | src/server/shared/Logging/AppenderConsole.cpp | 6 | ||||
-rw-r--r-- | src/server/shared/Logging/AppenderFile.cpp | 7 | ||||
-rw-r--r-- | src/server/shared/Logging/Log.cpp | 84 | ||||
-rw-r--r-- | src/server/shared/Logging/Log.h | 55 | ||||
-rw-r--r-- | src/server/shared/Logging/Logger.cpp | 16 | ||||
-rw-r--r-- | src/server/shared/Logging/Logger.h | 1 |
8 files changed, 56 insertions, 117 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 27adb44f452..74d2d5c49a1 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -441,7 +441,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) case SMART_EVENT_VICTIM_CASTING: if (e.event.targetCasting.spellId > 0 && !sSpellMgr->GetSpellInfo(e.event.targetCasting.spellId)) { - sLog->outError("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u uses non-existent Spell entry %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.event.spellHit.spell); + TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u uses non-existent Spell entry %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.event.spellHit.spell); return false; } diff --git a/src/server/shared/Logging/Appender.h b/src/server/shared/Logging/Appender.h index f5a8d4cd435..437c301ea6b 100644 --- a/src/server/shared/Logging/Appender.h +++ b/src/server/shared/Logging/Appender.h @@ -75,7 +75,7 @@ struct LogMessage ///@ Returns size of the log message content in bytes uint32 Size() const { - return prefix.size() + text.size(); + return static_cast<uint32>(prefix.size() + text.size()); } }; diff --git a/src/server/shared/Logging/AppenderConsole.cpp b/src/server/shared/Logging/AppenderConsole.cpp index a1212bd135b..78350029205 100644 --- a/src/server/shared/Logging/AppenderConsole.cpp +++ b/src/server/shared/Logging/AppenderConsole.cpp @@ -59,7 +59,7 @@ void AppenderConsole::InitColors(std::string const& str) void AppenderConsole::SetColor(bool stdout_stream, ColorTypes color) { - #if PLATFORM == PLATFORM_WINDOWS +#if PLATFORM == PLATFORM_WINDOWS static WORD WinColorFG[MaxColors] = { 0, // BLACK @@ -87,7 +87,7 @@ void AppenderConsole::SetColor(bool stdout_stream, ColorTypes color) HANDLE hConsole = GetStdHandle(stdout_stream ? STD_OUTPUT_HANDLE : STD_ERROR_HANDLE); SetConsoleTextAttribute(hConsole, WinColorFG[color]); - #else +#else enum ANSITextAttr { TA_NORMAL = 0, @@ -156,7 +156,7 @@ void AppenderConsole::ResetColor(bool stdout_stream) void AppenderConsole::_write(LogMessage const& message) { - bool stdout_stream = message.level == LOG_LEVEL_ERROR || message.level == LOG_LEVEL_FATAL; + bool stdout_stream = !(message.level == LOG_LEVEL_ERROR || message.level == LOG_LEVEL_FATAL); if (_colored) { diff --git a/src/server/shared/Logging/AppenderFile.cpp b/src/server/shared/Logging/AppenderFile.cpp index 54458346bb9..d5410112b97 100644 --- a/src/server/shared/Logging/AppenderFile.cpp +++ b/src/server/shared/Logging/AppenderFile.cpp @@ -16,7 +16,10 @@ */ #include "AppenderFile.h" -#include "Common.h" + +#if PLATFORM == PLATFORM_WINDOWS +# include <Windows.h> +#endif AppenderFile::AppenderFile(uint8 id, std::string const& name, LogLevel level, const char* _filename, const char* _logDir, const char* _mode, AppenderFlags _flags, uint64 fileSize): Appender(id, name, APPENDER_FILE, level, _flags), @@ -28,7 +31,7 @@ AppenderFile::AppenderFile(uint8 id, std::string const& name, LogLevel level, co fileSize(0) { dynamicName = std::string::npos != filename.find("%s"); - backup = _flags & APPENDER_FLAGS_MAKE_FILE_BACKUP; + backup = (_flags & APPENDER_FLAGS_MAKE_FILE_BACKUP) != 0; logfile = !dynamicName ? OpenFile(_filename, _mode, mode == "w" && backup) : NULL; } diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp index 58c22d19df1..bca150b7059 100644 --- a/src/server/shared/Logging/Log.cpp +++ b/src/server/shared/Logging/Log.cpp @@ -75,9 +75,11 @@ void Log::CreateAppenderFromConfig(std::string const& appenderName) // if type = File. optional1 = file and option2 = mode // if type = Console. optional1 = Color std::string options = sConfigMgr->GetStringDefault(appenderName.c_str(), ""); + Tokenizer tokens(options, ','); Tokenizer::const_iterator iter = tokens.begin(); - uint8 size = tokens.size(); + + size_t size = tokens.size(); std::string name = appenderName.substr(9); if (size < 2) @@ -87,8 +89,9 @@ void Log::CreateAppenderFromConfig(std::string const& appenderName) } AppenderFlags flags = APPENDER_FLAGS_NONE; - AppenderType type = AppenderType(atoi(*iter)); - LogLevel level = LogLevel(atoi(*(++iter))); + AppenderType type = AppenderType(atoi(*iter++)); + LogLevel level = LogLevel(atoi(*iter++)); + if (level > LOG_LEVEL_FATAL) { fprintf(stderr, "Log::CreateAppenderFromConfig: Wrong Log Level %d for appender %s\n", level, name.c_str()); @@ -96,7 +99,7 @@ void Log::CreateAppenderFromConfig(std::string const& appenderName) } if (size > 2) - flags = AppenderFlags(atoi(*(++iter))); + flags = AppenderFlags(atoi(*iter++)); switch (type) { @@ -105,7 +108,7 @@ void Log::CreateAppenderFromConfig(std::string const& appenderName) AppenderConsole* appender = new AppenderConsole(NextAppenderId(), name, level, flags); appenders[appender->getId()] = appender; if (size > 3) - appender->InitColors(*(++iter)); + appender->InitColors(*iter++); //fprintf(stdout, "Log::CreateAppenderFromConfig: Created Appender %s (%u), Type CONSOLE, Mask %u\n", appender->getName().c_str(), appender->getId(), appender->getLogLevel()); break; } @@ -120,10 +123,10 @@ void Log::CreateAppenderFromConfig(std::string const& appenderName) return; } - filename = *(++iter); + filename = *iter++; if (size > 4) - mode = *(++iter); + mode = *iter++; if (flags & APPENDER_FLAGS_USE_TIMESTAMP) { @@ -136,7 +139,7 @@ void Log::CreateAppenderFromConfig(std::string const& appenderName) uint64 maxFileSize = 0; if (size > 5) - maxFileSize = atoi(*(++iter)); + maxFileSize = atoi(*iter++); uint8 id = NextAppenderId(); appenders[id] = new AppenderFile(id, name, level, filename.c_str(), m_logsDir.c_str(), mode.c_str(), flags, maxFileSize); @@ -188,7 +191,7 @@ void Log::CreateLoggerFromConfig(std::string const& appenderName) return; } - level = LogLevel(atoi(*iter)); + level = LogLevel(atoi(*iter++)); if (level > LOG_LEVEL_FATAL) { fprintf(stderr, "Log::CreateLoggerFromConfig: Wrong Log Level %u for logger %s\n", type, name.c_str()); @@ -198,7 +201,6 @@ void Log::CreateLoggerFromConfig(std::string const& appenderName) logger.Create(name, level); //fprintf(stdout, "Log::CreateLoggerFromConfig: Created Logger %s, Level %u\n", name.c_str(), level); - ++iter; std::istringstream ss(*iter); std::string str; @@ -320,67 +322,8 @@ bool Log::SetLogLevel(std::string const& name, const char* newLevelc, bool isLog appender->setLogLevel(newLevel); } - return true; -} - -void Log::outTrace(std::string const& filter, const char * str, ...) -{ - va_list ap; - va_start(ap, str); - vlog(filter, LOG_LEVEL_TRACE, str, ap); - - va_end(ap); -} - -void Log::outDebug(std::string const& filter, const char * str, ...) -{ - va_list ap; - va_start(ap, str); - - vlog(filter, LOG_LEVEL_DEBUG, str, ap); - - va_end(ap); -} - -void Log::outInfo(std::string const& filter, const char * str, ...) -{ - va_list ap; - va_start(ap, str); - - vlog(filter, LOG_LEVEL_INFO, str, ap); - - va_end(ap); -} - -void Log::outWarn(std::string const& filter, const char * str, ...) -{ - va_list ap; - va_start(ap, str); - - vlog(filter, LOG_LEVEL_WARN, str, ap); - - va_end(ap); -} - -void Log::outError(std::string const& filter, const char * str, ...) -{ - va_list ap; - va_start(ap, str); - - vlog(filter, LOG_LEVEL_ERROR, str, ap); - - va_end(ap); -} - -void Log::outFatal(std::string const& filter, const char * str, ...) -{ - va_list ap; - va_start(ap, str); - - vlog(filter, LOG_LEVEL_FATAL, str, ap); - - va_end(ap); + return true; } void Log::outCharDump(char const* str, uint32 accountId, uint32 guid, char const* name) @@ -453,6 +396,7 @@ void Log::LoadFromConfig() 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(); } diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h index e2e942d7e9b..af522a6745f 100644 --- a/src/server/shared/Logging/Log.h +++ b/src/server/shared/Logging/Log.h @@ -21,8 +21,8 @@ #include "Define.h" #include "Appender.h" -#include "LogWorker.h" #include "Logger.h" +#include "LogWorker.h" #include "Dynamic/UnorderedMap.h" #include <string> @@ -46,20 +46,15 @@ class Log bool ShouldLog(std::string const& type, LogLevel level) const; bool SetLogLevel(std::string const& name, char const* level, bool isLogger = true); - 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 outMessage(std::string const& f, LogLevel level, char const* str, ...) ATTR_PRINTF(4, 5); void outCommand(uint32 account, const char * str, ...) ATTR_PRINTF(3, 4); void outCharDump(char const* str, uint32 account_id, uint32 guid, char const* name); - static std::string GetTimestampStr(); void SetRealmId(uint32 id); private: + static std::string GetTimestampStr(); void vlog(std::string const& f, LogLevel level, char const* str, va_list argptr); void write(LogMessage* msg) const; @@ -112,41 +107,51 @@ inline bool Log::ShouldLog(std::string const& type, LogLevel level) const return logLevel != LOG_LEVEL_DISABLED && logLevel <= level; } +inline void Log::outMessage(std::string const& filter, LogLevel level, const char * str, ...) +{ + va_list ap; + va_start(ap, str); + + vlog(filter, level, str, ap); + + va_end(ap); +} + #define sLog ACE_Singleton<Log, ACE_Thread_Mutex>::instance() #if COMPILER != COMPILER_MICROSOFT -#define TC_LOG_MESSAGE_BODY(level__, call__, filterType__, ...) \ - do { \ - if (sLog->ShouldLog(filterType__, level__)) \ - sLog->call__(filterType__, __VA_ARGS__); \ +#define TC_LOG_MESSAGE_BODY(filterType__, level__, ...) \ + do { \ + if (sLog->ShouldLog(filterType__, level__)) \ + sLog->outMessage(filterType__, level__, __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) \ +#define TC_LOG_MESSAGE_BODY(filterType__, level__, ...) \ + __pragma(warning(push)) \ + __pragma(warning(disable:4127)) \ + do { \ + if (sLog->ShouldLog(filterType__, level__)) \ + sLog->outMessage(filterType__, level__, __VA_ARGS__); \ + } while (0) \ __pragma(warning(pop)) #endif #define TC_LOG_TRACE(filterType__, ...) \ - TC_LOG_MESSAGE_BODY(LOG_LEVEL_TRACE, outTrace, filterType__, __VA_ARGS__) + TC_LOG_MESSAGE_BODY(filterType__, LOG_LEVEL_TRACE, __VA_ARGS__) #define TC_LOG_DEBUG(filterType__, ...) \ - TC_LOG_MESSAGE_BODY(LOG_LEVEL_DEBUG, outDebug, filterType__, __VA_ARGS__) + TC_LOG_MESSAGE_BODY(filterType__, LOG_LEVEL_DEBUG, __VA_ARGS__) #define TC_LOG_INFO(filterType__, ...) \ - TC_LOG_MESSAGE_BODY(LOG_LEVEL_INFO, outInfo, filterType__, __VA_ARGS__) + TC_LOG_MESSAGE_BODY(filterType__, LOG_LEVEL_INFO, __VA_ARGS__) #define TC_LOG_WARN(filterType__, ...) \ - TC_LOG_MESSAGE_BODY(LOG_LEVEL_WARN, outWarn, filterType__, __VA_ARGS__) + TC_LOG_MESSAGE_BODY(filterType__, LOG_LEVEL_WARN, __VA_ARGS__) #define TC_LOG_ERROR(filterType__, ...) \ - TC_LOG_MESSAGE_BODY(LOG_LEVEL_ERROR, outError, filterType__, __VA_ARGS__) + TC_LOG_MESSAGE_BODY(filterType__, LOG_LEVEL_ERROR, __VA_ARGS__) #define TC_LOG_FATAL(filterType__, ...) \ - TC_LOG_MESSAGE_BODY(LOG_LEVEL_FATAL, outFatal, filterType__, __VA_ARGS__) + TC_LOG_MESSAGE_BODY(filterType__, LOG_LEVEL_FATAL, __VA_ARGS__) #endif diff --git a/src/server/shared/Logging/Logger.cpp b/src/server/shared/Logging/Logger.cpp index ea8ed27ed03..6fff993e2ae 100644 --- a/src/server/shared/Logging/Logger.cpp +++ b/src/server/shared/Logging/Logger.cpp @@ -25,13 +25,6 @@ void Logger::Create(std::string const& _name, LogLevel _level) level = _level; } -Logger::~Logger() -{ - for (AppenderMap::iterator it = appenders.begin(); it != appenders.end(); ++it) - it->second = NULL; - appenders.clear(); -} - std::string const& Logger::getName() const { return name; @@ -49,12 +42,7 @@ void Logger::addAppender(uint8 id, Appender* appender) void Logger::delAppender(uint8 id) { - AppenderMap::iterator it = appenders.find(id); - if (it != appenders.end()) - { - it->second = NULL; - appenders.erase(it); - } + appenders.erase(id); } void Logger::setLogLevel(LogLevel _level) @@ -66,7 +54,7 @@ void Logger::write(LogMessage& message) const { if (!level || level > message.level || message.text.empty()) { - //fprintf(stderr, "Logger::write: Logger %s, Level %u. Msg %s Level %u WRONG LEVEL MASK OR EMPTY MSG\n", getName().c_str(), messge.level, message.text.c_str(), .message.level); // DEBUG - RemoveMe + //fprintf(stderr, "Logger::write: Logger %s, Level %u. Msg %s Level %u WRONG LEVEL MASK OR EMPTY MSG\n", getName().c_str(), getLogLevel(), message.text.c_str(), message.level); return; } diff --git a/src/server/shared/Logging/Logger.h b/src/server/shared/Logging/Logger.h index e9d39830ce6..24727ce1016 100644 --- a/src/server/shared/Logging/Logger.h +++ b/src/server/shared/Logging/Logger.h @@ -24,7 +24,6 @@ class Logger { public: Logger(); - ~Logger(); void Create(std::string const& name, LogLevel level); void addAppender(uint8 type, Appender *); |