* Optimized Log::outDB by removing unneeded variadic argument parsing. Also use enum instead of explicit uint32.

--HG--
branch : trunk
This commit is contained in:
XTZGZoReX
2009-04-24 18:01:31 +02:00
parent f235fb6694
commit c9c86b36df
2 changed files with 8 additions and 20 deletions

View File

@@ -344,28 +344,16 @@ std::string Log::GetTimestampStr()
return std::string(buf);
}
void Log::outDB( uint32 type, const char * str, ... )
void Log::outDB( LogTypes type, const char * str )
{
if(type >= MAX_LOG_TYPES)
return;
if(!str)
if(!str || std::string(str).empty() || type >= MAX_LOG_TYPES)
return;
std::string new_str(str);
LoginDatabase.escape_string(new_str);
char nnew_str[MAX_QUERY_LEN];
va_list ap;
va_start(ap, str);
int res = vsnprintf(nnew_str, MAX_QUERY_LEN, new_str.c_str(), ap);
va_end(ap);
if ( (res < 0) || (!nnew_str) || (std::string(nnew_str).empty()) )
return;
LoginDatabase.PExecute("INSERT INTO logs (time, realm, type, string) "
"VALUES ("I64FMTD", %u, %u, '%s');", uint64(time(0)), realm, type, nnew_str);
"VALUES ("I64FMTD", %u, %u, '%s');", uint64(time(0)), realm, (uint32)type, new_str.c_str());
}
void Log::outString( const char * str, ... )

View File

@@ -29,10 +29,10 @@ class Config;
enum LogFilters
{
LOG_FILTER_TRANSPORT_MOVES = 0x1,
LOG_FILTER_CREATURE_MOVES = 0x2,
LOG_FILTER_VISIBILITY_CHANGES = 0x4,
LOG_FILTER_ACHIEVEMENT_UPDATES = 0x8
LOG_FILTER_TRANSPORT_MOVES = 1,
LOG_FILTER_CREATURE_MOVES = 2,
LOG_FILTER_VISIBILITY_CHANGES = 4,
LOG_FILTER_ACHIEVEMENT_UPDATES = 8
};
enum LogTypes
@@ -95,7 +95,7 @@ class Log : public Trinity::Singleton<Log, Trinity::ClassLevelLockable<Log, ZThr
void SetColor(bool stdout_stream, ColorTypes color);
void ResetColor(bool stdout_stream);
void outDB( uint32 type, const char * str, ... ) ATTR_PRINTF(3,4);
void outDB( LogTypes type, const char * str );
void outString( const char * str, ... ) ATTR_PRINTF(2,3);
void outString( );
void outError( const char * err, ... ) ATTR_PRINTF(2,3);