aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-03-23 20:09:55 -0600
committermegamage <none@none>2009-03-23 20:09:55 -0600
commit04b27302b0bde197bd78f84ba77f0736a48f152f (patch)
treed69ed3646e1ab129842fc830ae8cb9740945e93d /src
parent84d0aae7fcc33cd1eb19bdb9f56c9a8014d0f759 (diff)
*Add new log level "crash alarm" to record very dangerous errors.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/MotionMaster.cpp2
-rw-r--r--src/shared/Log.cpp40
-rw-r--r--src/shared/Log.h2
3 files changed, 43 insertions, 1 deletions
diff --git a/src/game/MotionMaster.cpp b/src/game/MotionMaster.cpp
index 8d26348c85e..6dcf2d0e214 100644
--- a/src/game/MotionMaster.cpp
+++ b/src/game/MotionMaster.cpp
@@ -515,7 +515,7 @@ void MotionMaster::DirectDelete(_Ty curr)
void MotionMaster::DelayedDelete(_Ty curr)
{
- sLog.outError("CRASH ALARM! Unit (Entry %u) is trying to delete its updating MG (Type %u)!", i_owner->GetEntry(), curr->GetMovementGeneratorType());
+ sLog.outCrash("Unit (Entry %u) is trying to delete its updating MG (Type %u)!", i_owner->GetEntry(), curr->GetMovementGeneratorType());
if(isStatic(curr))
return;
if(!m_expList)
diff --git a/src/shared/Log.cpp b/src/shared/Log.cpp
index d0171a523fe..e443d10ed6c 100644
--- a/src/shared/Log.cpp
+++ b/src/shared/Log.cpp
@@ -402,6 +402,46 @@ void Log::outString( const char * str, ... )
fflush(stdout);
}
+void Log::outCrash( const char * err, ... )
+{
+ if( !err )
+ return;
+
+ if (m_enableLogDB)
+ {
+ va_list ap2;
+ va_start(ap2, err);
+ char nnew_str[MAX_QUERY_LEN];
+ vsnprintf(nnew_str, MAX_QUERY_LEN, err, ap2);
+ outDB(LOG_TYPE_CRASH, nnew_str);
+ va_end(ap2);
+ }
+
+ if(m_colored)
+ SetColor(false,RED);
+
+ UTF8PRINTF(stderr,err,);
+
+ if(m_colored)
+ ResetColor(false);
+
+ fprintf( stderr, "\n" );
+ if(logfile)
+ {
+ outTimestamp(logfile);
+ fprintf(logfile, "CRASH ALARM:" );
+
+ va_list ap;
+ va_start(ap, err);
+ vfprintf(logfile, err, ap);
+ va_end(ap);
+
+ fprintf(logfile, "\n" );
+ fflush(logfile);
+ }
+ fflush(stderr);
+}
+
void Log::outError( const char * err, ... )
{
if( !err )
diff --git a/src/shared/Log.h b/src/shared/Log.h
index dc34f3d585c..ecca9587b0e 100644
--- a/src/shared/Log.h
+++ b/src/shared/Log.h
@@ -47,6 +47,7 @@ enum LogTypes
LOG_TYPE_RA = 7,
LOG_TYPE_GM = 8,
LOG_TYPE_PACKET = 9,
+ LOG_TYPE_CRASH = 10,
MAX_LOG_TYPES
};
@@ -97,6 +98,7 @@ class Log : public Trinity::Singleton<Log, Trinity::ClassLevelLockable<Log, ZThr
void outDB( uint8 type, const char * str, ... ) ATTR_PRINTF(3,4);
void outString( const char * str, ... ) ATTR_PRINTF(2,3);
void outError( const char * err, ... ) ATTR_PRINTF(2,3);
+ void outCrash( const char * err, ... ) ATTR_PRINTF(2,3);
void outBasic( const char * str, ... ) ATTR_PRINTF(2,3);
void outDetail( const char * str, ... ) ATTR_PRINTF(2,3);
void outDebug( const char * str, ... ) ATTR_PRINTF(2,3);