Core/Logging: Add option to remove timestamp, Log Level and Log Filter Type from logged msgs

- Appender config option .Timestamp and .Backup became obsolete
- New Appender config option .Flags added

Appender Console prefixes Log Level and Log Filter Type to the logged text as default
Appender File prefixes Timestamp, Log Level and Log Filter Type to the logged text as default
This commit is contained in:
Spp
2012-08-05 15:38:25 +02:00
parent 0b98656b28
commit 3f42094b9c
11 changed files with 100 additions and 47 deletions

View File

@@ -31,8 +31,8 @@ std::string LogMessage::getTimeStr()
return getTimeStr(mtime);
}
Appender::Appender(uint8 _id, std::string const& _name, AppenderType _type /* = APPENDER_NONE*/, LogLevel _level /* = LOG_LEVEL_DISABLED */):
id(_id), name(_name), type(_type), level(_level)
Appender::Appender(uint8 _id, std::string const& _name, AppenderType _type /* = APPENDER_NONE*/, LogLevel _level /* = LOG_LEVEL_DISABLED */, AppenderFlags _flags /* = APPENDER_FLAGS_NONE */):
id(_id), name(_name), type(_type), level(_level), flags(_flags)
{
}
@@ -60,6 +60,11 @@ LogLevel Appender::getLogLevel() const
return level;
}
AppenderFlags Appender::getFlags() const
{
return flags;
}
void Appender::setLogLevel(LogLevel _level)
{
level = _level;
@@ -67,9 +72,40 @@ void Appender::setLogLevel(LogLevel _level)
void Appender::write(LogMessage& message)
{
if (level && level <= message.level)
_write(message);
//else fprintf(stderr, "Appender::write: Appender %s, Level %s. Msg %s Level %s Type %s WRONG LEVEL MASK\n", getName().c_str(), getLogLevelString(level), message.text.c_str(), getLogLevelString(message.level), getLogFilterTypeString(message.type)); // DEBUG - RemoveMe
if (!level || level > message.level)
{
//fprintf(stderr, "Appender::write: Appender %s, Level %s. Msg %s Level %s Type %s WRONG LEVEL MASK\n", getName().c_str(), getLogLevelString(level), message.text.c_str(), getLogLevelString(message.level), getLogFilterTypeString(message.type)); // DEBUG - RemoveMe
return;
}
message.prefix.clear();
if (flags & APPENDER_FLAGS_PREFIX_TIMESTAMP)
message.prefix.append(message.getTimeStr().c_str());
if (flags & APPENDER_FLAGS_PREFIX_LOGLEVEL)
{
if (!message.prefix.empty())
message.prefix.push_back(' ');
char text[MAX_QUERY_LEN];
snprintf(text, MAX_QUERY_LEN, "%-5s", Appender::getLogLevelString(message.level));
message.prefix.append(text);
}
if (flags & APPENDER_FLAGS_PREFIX_LOGFILTERTYPE)
{
if (!message.prefix.empty())
message.prefix.push_back(' ');
char text[MAX_QUERY_LEN];
snprintf(text, MAX_QUERY_LEN, "[%-15s]", Appender::getLogFilterTypeString(message.type));
message.prefix.append(text);
}
if (!message.prefix.empty())
message.prefix.push_back(' ');
_write(message);
}
const char* Appender::getLogLevelString(LogLevel level)
@@ -163,6 +199,8 @@ char const* Appender::getLogFilterTypeString(LogFilterType type)
return "WORLDSERVER";
case LOG_FILTER_GAMEEVENTS:
return "GAMEEVENTS";
case LOG_FILTER_CALENDAR:
return "CALENDAR";
default:
break;
}