summaryrefslogtreecommitdiffstats
path: root/source/MCLogger.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/MCLogger.cpp')
-rw-r--r--source/MCLogger.cpp191
1 files changed, 191 insertions, 0 deletions
diff --git a/source/MCLogger.cpp b/source/MCLogger.cpp
new file mode 100644
index 000000000..daf43f796
--- /dev/null
+++ b/source/MCLogger.cpp
@@ -0,0 +1,191 @@
+
+#include "Globals.h" // NOTE: MSVC stupidness requires this to be the same across all modules
+
+#include <time.h>
+#include "Log.h"
+
+
+
+
+
+cMCLogger* cMCLogger::s_MCLogger = 0;
+
+cMCLogger* cMCLogger::GetInstance()
+{
+ return s_MCLogger;
+}
+
+
+
+
+
+cMCLogger::cMCLogger()
+{
+ AString FileName;
+ Printf(FileName, "LOG_%d.txt", (int)time(0) );
+ m_Log = new cLog(FileName);
+ m_Log->Log("--- Started Log ---");
+
+ s_MCLogger = this;
+}
+
+
+
+
+
+cMCLogger::cMCLogger( char* a_File )
+{
+ m_Log = new cLog( a_File );
+}
+
+
+
+
+
+cMCLogger::~cMCLogger()
+{
+ m_Log->Log("--- Stopped Log ---");
+ delete m_Log;
+ if (this == s_MCLogger)
+ s_MCLogger = NULL;
+}
+
+
+
+
+
+void cMCLogger::LogSimple(const char* a_Text, int a_LogType /* = 0 */ )
+{
+ switch( a_LogType )
+ {
+ case 0:
+ LOG("%s", a_Text);
+ break;
+ case 1:
+ LOGINFO("%s", a_Text);
+ break;
+ case 2:
+ LOGWARN("%s", a_Text);
+ break;
+ case 3:
+ LOGERROR("%s", a_Text);
+ break;
+ default:
+ LOG("(#%d#: %s", a_LogType, a_Text);
+ break;
+ }
+}
+
+
+
+
+
+void cMCLogger::Log(const char* a_Format, va_list a_ArgList)
+{
+ cCSLock Lock(m_CriticalSection);
+ SetColor( 0x7 ); // 0x7 is default grey color
+ m_Log->Log( a_Format, a_ArgList );
+ SetColor(0x07); // revert color back
+}
+
+
+
+
+
+void cMCLogger::Info(const char* a_Format, va_list a_ArgList)
+{
+ cCSLock Lock(m_CriticalSection);
+// for( int i = 0; i < 16; i++)
+// {
+// for( int j = 0; j < 16; j++ )
+// {
+// SetConsoleTextAttribute( hConsole, i | (j<<4) );
+// printf("0x%x", (i|j<<4));
+// }
+// printf("\n");
+// }
+
+ SetColor( 0xe ); // 0xe is yellow
+ m_Log->Log( a_Format, a_ArgList );
+ SetColor(0x07); // revert color back
+}
+
+
+
+
+
+void cMCLogger::Warn(const char* a_Format, va_list a_ArgList)
+{
+ cCSLock Lock(m_CriticalSection);
+ SetColor( 0xc ); // 0xc is red
+ m_Log->Log( a_Format, a_ArgList );
+ SetColor(0x07); // revert color back
+}
+
+
+
+
+
+void cMCLogger::Error(const char* a_Format, va_list a_ArgList)
+{
+ cCSLock Lock(m_CriticalSection);
+ SetColor( 0xc0 ); // 0xc0 is red bg and black text
+ m_Log->Log( a_Format, a_ArgList );
+ SetColor(0x07); // revert color back
+}
+
+
+
+
+
+void cMCLogger::SetColor( unsigned char a_Color )
+{
+#ifdef _WIN32
+ HANDLE hConsole = GetStdHandle( STD_OUTPUT_HANDLE );
+ SetConsoleTextAttribute( hConsole, a_Color );
+#else
+ (void)a_Color;
+#endif
+}
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////
+// Global functions
+void LOG(const char* a_Format, ...)
+{
+ va_list argList;
+ va_start(argList, a_Format);
+ cMCLogger::GetInstance()->Log( a_Format, argList );
+ va_end(argList);
+}
+
+void LOGINFO(const char* a_Format, ...)
+{
+ va_list argList;
+ va_start(argList, a_Format);
+ cMCLogger::GetInstance()->Info( a_Format, argList );
+ va_end(argList);
+}
+
+void LOGWARN(const char* a_Format, ...)
+{
+ va_list argList;
+ va_start(argList, a_Format);
+ cMCLogger::GetInstance()->Warn( a_Format, argList );
+ va_end(argList);
+}
+
+void LOGERROR(const char* a_Format, ...)
+{
+ va_list argList;
+ va_start(argList, a_Format);
+ cMCLogger::GetInstance()->Error( a_Format, argList );
+ va_end(argList);
+}
+
+
+
+