[9924] Implement .server log filter and .server log level comamnds.

* .server log filter comamnd let temporary (until config reload or restart)
  set log filters state. Or look at filters state.
* .server log level renamed from .server set loglevel but now let look at log level also.
This commit is contained in:
VladimirMangos 2010-05-18 11:58:21 +04:00
parent ffd2cf874d
commit b6d7365ac9
12 changed files with 140 additions and 48 deletions

View file

@ -33,7 +33,7 @@ enum LogLevel
LOG_LVL_DEBUG = 3
};
// bitmask
// bitmask (not forgot update logFilterData content)
enum LogFilters
{
LOG_FILTER_TRANSPORT_MOVES = 0x0001, // any related to transport moves
@ -48,6 +48,17 @@ enum LogFilters
LOG_FILTER_AI_AND_MOVEGENSS = 0x0200, // DoT/HoT apply trace
};
#define LOG_FILTER_COUNT 10
struct LogFilterData
{
char const* name;
char const* configName;
bool defaultState;
};
extern LogFilterData logFilterData[LOG_FILTER_COUNT];
enum Color
{
BLACK,
@ -129,6 +140,7 @@ class Log : public MaNGOS::Singleton<Log, MaNGOS::ClassLevelLockable<Log, ACE_Th
// any log level
void outCharDump( const char * str, uint32 account_id, uint32 guid, const char * name );
void outRALog( const char * str, ... ) ATTR_PRINTF(2,3);
uint32 GetLogLevel() const { return m_logLevel; }
void SetLogLevel(char * Level);
void SetLogFileLevel(char * Level);
void SetColor(bool stdout_stream, Color color);
@ -137,6 +149,7 @@ class Log : public MaNGOS::Singleton<Log, MaNGOS::ClassLevelLockable<Log, ACE_Th
static void outTimestamp(FILE* file);
static std::string GetTimestampStr();
uint32 getLogFilter() const { return m_logFilter; }
void SetLogFilter(LogFilters filter, bool on) { if (on) m_logFilter |= filter; else m_logFilter &= ~filter; }
bool HasLogLevelOrHigher(LogLevel loglvl) const { return m_logLevel >= loglvl || (m_logFileLevel >= loglvl && logfile); }
bool IsOutCharDump() const { return m_charLog_Dump; }
bool IsIncludeTime() const { return m_includeTime; }