diff options
| author | bunnei <ericbunnie@gmail.com> | 2014-05-29 23:03:03 -0400 | 
|---|---|---|
| committer | bunnei <ericbunnie@gmail.com> | 2014-05-29 23:03:03 -0400 | 
| commit | 6fc62f8c93bd81f6207fcbdfe332b4e56c2aa2be (patch) | |
| tree | d6a66ca0fdd3f6e2ff66cf1f88283107d525c0c7 | |
| parent | 9839f3b6cd9ea0d62730edee7db027dde86f6239 (diff) | |
log: fixed to not print twice, enabled coloring, added OS print logging as its own type
| -rw-r--r-- | src/common/console_listener.cpp | 16 | ||||
| -rw-r--r-- | src/common/log.h | 31 | ||||
| -rw-r--r-- | src/common/log_manager.cpp | 28 | ||||
| -rw-r--r-- | src/common/log_manager.h | 4 | 
4 files changed, 42 insertions, 37 deletions
| diff --git a/src/common/console_listener.cpp b/src/common/console_listener.cpp index b5f32d1bd..db48abbf6 100644 --- a/src/common/console_listener.cpp +++ b/src/common/console_listener.cpp @@ -259,14 +259,17 @@ void ConsoleListener::Log(LogTypes::LOG_LEVELS Level, const char *Text)      switch (Level)      { +    case OS_LEVEL: // light yellow +        Color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY; +        break;      case NOTICE_LEVEL: // light green          Color = FOREGROUND_GREEN | FOREGROUND_INTENSITY;          break;      case ERROR_LEVEL: // light red          Color = FOREGROUND_RED | FOREGROUND_INTENSITY;          break; -    case WARNING_LEVEL: // light yellow -        Color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY; +    case WARNING_LEVEL: // light purple +        Color = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY;          break;      case INFO_LEVEL: // cyan          Color = FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY; @@ -278,15 +281,8 @@ void ConsoleListener::Log(LogTypes::LOG_LEVELS Level, const char *Text)          Color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;          break;      } -    if (strlen(Text) > 10) -    { -        // First 10 chars white -        SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY); -        WriteConsole(hConsole, Text, 10, &cCharsWritten, NULL); -        Text += 10; -    }      SetConsoleTextAttribute(hConsole, Color); -    WriteConsole(hConsole, Text, (DWORD)strlen(Text), &cCharsWritten, NULL); +    printf(Text);  #else      char ColorAttr[16] = "";      char ResetAttr[16] = ""; diff --git a/src/common/log.h b/src/common/log.h index 8b39b03a1..2543b51a8 100644 --- a/src/common/log.h +++ b/src/common/log.h @@ -7,11 +7,14 @@  #define LOGGING -#define    NOTICE_LEVEL  1  // VERY important information that is NOT errors. Like startup and OSReports. -#define    ERROR_LEVEL   2  // Critical errors  -#define    WARNING_LEVEL 3  // Something is suspicious. -#define    INFO_LEVEL    4  // General information. -#define    DEBUG_LEVEL   5  // Detailed debugging - might make things slow. +enum { +    OS_LEVEL,       // Printed by the emulated operating system +    NOTICE_LEVEL,   // VERY important information that is NOT errors. Like startup and OSReports. +    ERROR_LEVEL,    // Critical errors  +    WARNING_LEVEL,  // Something is suspicious. +    INFO_LEVEL,     // General information. +    DEBUG_LEVEL,    // Detailed debugging - might make things slow. +};  namespace LogTypes  { @@ -70,6 +73,7 @@ enum LOG_TYPE {  // FIXME: should this be removed?  enum LOG_LEVELS { +    LOS = OS_LEVEL,      LNOTICE = NOTICE_LEVEL,      LERROR = ERROR_LEVEL,      LWARNING = WARNING_LEVEL, @@ -82,8 +86,8 @@ enum LOG_LEVELS {  }  // namespace -void GenericLog(LOGTYPES_LEVELS level, LOGTYPES_TYPE type, -        const char *file, int line, const char *fmt, ...) +void GenericLog(LOGTYPES_LEVELS level, LOGTYPES_TYPE type, const char*file, int line,  +    const char* function, const char* fmt, ...)  #ifdef __GNUC__          __attribute__((format(printf, 5, 6)))  #endif @@ -97,16 +101,19 @@ void GenericLog(LOGTYPES_LEVELS level, LOGTYPES_TYPE type,  #endif // loglevel  #endif // logging -#ifdef GEKKO -#define GENERIC_LOG(t, v, ...) -#else +#ifdef _WIN32 +#ifndef __func__ +#define __func__ __FUNCTION__ +#endif +#endif +  // Let the compiler optimize this out  #define GENERIC_LOG(t, v, ...) { \      if (v <= MAX_LOGLEVEL) \ -        GenericLog(v, t, __FILE__, __LINE__, __VA_ARGS__); \ +        GenericLog(v, t, __FILE__, __LINE__, __func__, __VA_ARGS__); \      } -#endif +#define OS_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LOS, __VA_ARGS__) } while (0)  #define ERROR_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LERROR, __VA_ARGS__) } while (0)  #define WARN_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LWARNING, __VA_ARGS__) } while (0)  #define NOTICE_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LNOTICE, __VA_ARGS__) } while (0) diff --git a/src/common/log_manager.cpp b/src/common/log_manager.cpp index 146472888..d026fca56 100644 --- a/src/common/log_manager.cpp +++ b/src/common/log_manager.cpp @@ -10,14 +10,16 @@  #include "common/thread.h"  #include "common/file_util.h" -void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type,  -        const char *file, int line, const char* fmt, ...) +void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char* file, int line,  +    const char* function, const char* fmt, ...)  {      va_list args;      va_start(args, fmt); -    if (LogManager::GetInstance()) + +    if (LogManager::GetInstance()) {          LogManager::GetInstance()->Log(level, type, -            file, line, fmt, args); +            file, line, function, fmt, args); +    }      va_end(args);  } @@ -88,6 +90,8 @@ LogManager::LogManager()              m_Log[i]->AddListener(m_debuggerLog);  #endif      } + +    m_consoleLog->Open();  }  LogManager::~LogManager() @@ -107,8 +111,8 @@ LogManager::~LogManager()      delete m_debuggerLog;  } -void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type,  -    const char *file, int line, const char *format, va_list args) +void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char* file,  +    int line, const char* function, const char *fmt, va_list args)  {      char temp[MAX_MSGLEN];      char msg[MAX_MSGLEN * 2]; @@ -117,17 +121,15 @@ void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type,      if (!log->IsEnabled() || level > log->GetLevel() || ! log->HasListeners())          return; -    CharArrayFromFormatV(temp, MAX_MSGLEN, format, args); +    CharArrayFromFormatV(temp, MAX_MSGLEN, fmt, args); -    static const char level_to_char[7] = "-NEWID"; -    sprintf(msg, "%s %s:%u %c[%s]: %s\n", -        Common::Timer::GetTimeFormatted().c_str(), -        file, line, level_to_char[(int)level], -        log->GetShortName(), temp); +    static const char level_to_char[7] = "ONEWID"; +    sprintf(msg, "%s %s:%u %c[%s] %s: %s\n", Common::Timer::GetTimeFormatted().c_str(), file, line,  +        level_to_char[(int)level], log->GetShortName(), function, temp); +      #ifdef ANDROID      Host_SysMessage(msg);      #endif -    printf(msg); // TODO(ShizZy): RemoveMe when I no longer need this      log->Trigger(level, msg);  } diff --git a/src/common/log_manager.h b/src/common/log_manager.h index 580860b4d..3e238dfa7 100644 --- a/src/common/log_manager.h +++ b/src/common/log_manager.h @@ -99,8 +99,8 @@ public:      static u32 GetMaxLevel() { return MAX_LOGLEVEL;    } -    void Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type,  -             const char *file, int line, const char *fmt, va_list args); +    void Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char* file, int line,  +        const char* function, const char *fmt, va_list args);      void SetLogLevel(LogTypes::LOG_TYPE type, LogTypes::LOG_LEVELS level)      { | 
