Log level/type: Use enum class instead of the awkward namespace trick.

Just a small cleanup I've wanted to do for a long time.
This commit is contained in:
Henrik Rydgård 2023-08-25 11:33:48 +02:00
parent 308e983a99
commit 1025bbcf89
19 changed files with 162 additions and 170 deletions

View file

@ -358,7 +358,7 @@ void ConsoleListener::LogWriterThread()
for (char *Text = logLocal, *End = logLocal + logLocalSize; Text < End; ) for (char *Text = logLocal, *End = logLocal + logLocalSize; Text < End; )
{ {
LogTypes::LOG_LEVELS Level = LogTypes::LINFO; LogLevel Level = LogLevel::LINFO;
char *next = (char *) memchr(Text + 1, '\033', End - Text); char *next = (char *) memchr(Text + 1, '\033', End - Text);
size_t Len = next - Text; size_t Len = next - Text;
@ -367,7 +367,7 @@ void ConsoleListener::LogWriterThread()
if (Text[0] == '\033' && Text + 1 < End) if (Text[0] == '\033' && Text + 1 < End)
{ {
Level = (LogTypes::LOG_LEVELS) (Text[1] - '0'); Level = (LogLevel)(Text[1] - '0');
Len -= 2; Len -= 2;
Text += 2; Text += 2;
} }
@ -384,7 +384,7 @@ void ConsoleListener::LogWriterThread()
delete [] logLocal; delete [] logLocal;
} }
void ConsoleListener::SendToThread(LogTypes::LOG_LEVELS Level, const char *Text) void ConsoleListener::SendToThread(LogLevel Level, const char *Text)
{ {
// Oops, we're already quitting. Just do nothing. // Oops, we're already quitting. Just do nothing.
if (logPendingWritePos == (u32) -1) if (logPendingWritePos == (u32) -1)
@ -462,7 +462,7 @@ void ConsoleListener::SendToThread(LogTypes::LOG_LEVELS Level, const char *Text)
SetEvent(hTriggerEvent); SetEvent(hTriggerEvent);
} }
void ConsoleListener::WriteToConsole(LogTypes::LOG_LEVELS Level, const char *Text, size_t Len) void ConsoleListener::WriteToConsole(LogLevel Level, const char *Text, size_t Len)
{ {
_dbg_assert_msg_(IsOpen(), "Don't call this before opening the console."); _dbg_assert_msg_(IsOpen(), "Don't call this before opening the console.");
@ -479,21 +479,20 @@ void ConsoleListener::WriteToConsole(LogTypes::LOG_LEVELS Level, const char *Tex
WORD Color; WORD Color;
static wchar_t tempBuf[2048]; static wchar_t tempBuf[2048];
switch (Level) switch (Level) {
{ case LogLevel::LNOTICE: // light green
case NOTICE_LEVEL: // light green
Color = FOREGROUND_GREEN | FOREGROUND_INTENSITY; Color = FOREGROUND_GREEN | FOREGROUND_INTENSITY;
break; break;
case ERROR_LEVEL: // light red case LogLevel::LERROR: // light red
Color = FOREGROUND_RED | FOREGROUND_INTENSITY; Color = FOREGROUND_RED | FOREGROUND_INTENSITY;
break; break;
case WARNING_LEVEL: // light yellow case LogLevel::LWARNING: // light yellow
Color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY; Color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY;
break; break;
case INFO_LEVEL: // cyan case LogLevel::LINFO: // cyan
Color = FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY; Color = FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY;
break; break;
case DEBUG_LEVEL: // gray case LogLevel::LDEBUG: // gray
Color = FOREGROUND_INTENSITY; Color = FOREGROUND_INTENSITY;
break; break;
default: // off-white default: // off-white
@ -593,7 +592,7 @@ void ConsoleListener::PixelSpace(int Left, int Top, int Width, int Height, bool
COORD Coo = GetCoordinates(OldCursor, LBufWidth); COORD Coo = GetCoordinates(OldCursor, LBufWidth);
SetConsoleCursorPosition(hConsole, Coo); SetConsoleCursorPosition(hConsole, Coo);
// if (SLog.length() > 0) Log(LogTypes::LNOTICE, SLog.c_str()); // if (SLog.length() > 0) Log(LogLevel::LNOTICE, SLog.c_str());
// Resize the window too // Resize the window too
if (Resize) MoveWindow(GetConsoleWindow(), Left,Top, (Width + 100),Height, true); if (Resize) MoveWindow(GetConsoleWindow(), Left,Top, (Width + 100),Height, true);
@ -615,18 +614,16 @@ void ConsoleListener::Log(const LogMessage &msg) {
char ColorAttr[16] = ""; char ColorAttr[16] = "";
char ResetAttr[16] = ""; char ResetAttr[16] = "";
if (bUseColor) if (bUseColor) {
{
strcpy(ResetAttr, "\033[0m"); strcpy(ResetAttr, "\033[0m");
switch (msg.level) switch (msg.level) {
{ case LogLevel::LNOTICE: // light green
case NOTICE_LEVEL: // light green
strcpy(ColorAttr, "\033[92m"); strcpy(ColorAttr, "\033[92m");
break; break;
case ERROR_LEVEL: // light red case LogLevel::LERROR: // light red
strcpy(ColorAttr, "\033[91m"); strcpy(ColorAttr, "\033[91m");
break; break;
case WARNING_LEVEL: // light yellow case LogLevel::LWARNING: // light yellow
strcpy(ColorAttr, "\033[93m"); strcpy(ColorAttr, "\033[93m");
break; break;
default: default:
@ -656,5 +653,3 @@ void ConsoleListener::ClearScreen(bool Cursor)
if (Cursor) SetConsoleCursorPosition(hConsole, coordScreen); if (Cursor) SetConsoleCursorPosition(hConsole, coordScreen);
#endif #endif
} }

View file

@ -54,8 +54,8 @@ private:
static unsigned int WINAPI RunThread(void *lpParam); static unsigned int WINAPI RunThread(void *lpParam);
void LogWriterThread(); void LogWriterThread();
void SendToThread(LogTypes::LOG_LEVELS Level, const char *Text); void SendToThread(LogLevel Level, const char *Text);
void WriteToConsole(LogTypes::LOG_LEVELS Level, const char *Text, size_t Len); void WriteToConsole(LogLevel Level, const char *Text, size_t Len);
static int refCount; static int refCount;
static HANDLE hThread; static HANDLE hThread;

View file

@ -26,9 +26,7 @@
#define DEBUG_LEVEL 5 // Detailed debugging - might make things slow. #define DEBUG_LEVEL 5 // Detailed debugging - might make things slow.
#define VERBOSE_LEVEL 6 // Noisy debugging - sometimes needed but usually unimportant. #define VERBOSE_LEVEL 6 // Noisy debugging - sometimes needed but usually unimportant.
namespace LogTypes { enum class LogType {
enum LOG_TYPE {
SYSTEM = 0, // Catch-all for uncategorized things SYSTEM = 0, // Catch-all for uncategorized things
BOOT, BOOT,
COMMON, COMMON,
@ -67,7 +65,7 @@ enum LOG_TYPE {
ACHIEVEMENTS = HLE, // TODO: Make a real category ACHIEVEMENTS = HLE, // TODO: Make a real category
}; };
enum LOG_LEVELS : int { enum class LogLevel : int {
LNOTICE = NOTICE_LEVEL, LNOTICE = NOTICE_LEVEL,
LERROR = ERROR_LEVEL, LERROR = ERROR_LEVEL,
LWARNING = WARNING_LEVEL, LWARNING = WARNING_LEVEL,
@ -76,19 +74,18 @@ enum LOG_LEVELS : int {
LVERBOSE = VERBOSE_LEVEL, LVERBOSE = VERBOSE_LEVEL,
}; };
} // namespace void GenericLog(LogLevel level, LogType type,
void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type,
const char *file, int line, const char *fmt, ...) const char *file, int line, const char *fmt, ...)
#ifdef __GNUC__ #ifdef __GNUC__
__attribute__((format(printf, 5, 6))) __attribute__((format(printf, 5, 6)))
#endif #endif
; ;
bool GenericLogEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type); bool GenericLogEnabled(LogLevel level, LogType type);
// Exception for Windows - enable more log levels in release mode than on other platforms. // Exception for Windows - enable more log levels in release mode than on other platforms.
#if defined(_DEBUG) || defined(_WIN32) #if defined(_DEBUG) || defined(_WIN32)
// Needs to be an int (and not use the enum) because it's used by the preprocessor!
#define MAX_LOGLEVEL DEBUG_LEVEL #define MAX_LOGLEVEL DEBUG_LEVEL
#else #else
@ -102,16 +99,16 @@ bool GenericLogEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type);
// Let the compiler optimize this out. // Let the compiler optimize this out.
// TODO: Compute a dynamic max level as well that can be checked here. // TODO: Compute a dynamic max level as well that can be checked here.
#define GENERIC_LOG(t, v, ...) { \ #define GENERIC_LOG(t, v, ...) { \
if (v <= MAX_LOGLEVEL) \ if ((int)v <= MAX_LOGLEVEL) \
GenericLog(v, t, __FILE__, __LINE__, __VA_ARGS__); \ GenericLog(v, t, __FILE__, __LINE__, __VA_ARGS__); \
} }
#define ERROR_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LERROR, __VA_ARGS__) } while (false) #define ERROR_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LERROR, __VA_ARGS__) } while (false)
#define WARN_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LWARNING, __VA_ARGS__) } while (false) #define WARN_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LWARNING, __VA_ARGS__) } while (false)
#define NOTICE_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LNOTICE, __VA_ARGS__) } while (false) #define NOTICE_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LNOTICE, __VA_ARGS__) } while (false)
#define INFO_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LINFO, __VA_ARGS__) } while (false) #define INFO_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LINFO, __VA_ARGS__) } while (false)
#define DEBUG_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LDEBUG, __VA_ARGS__) } while (false) #define DEBUG_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LDEBUG, __VA_ARGS__) } while (false)
#define VERBOSE_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LVERBOSE, __VA_ARGS__) } while (false) #define VERBOSE_LOG(t,...) do { GENERIC_LOG(LogType::t, LogLevel::LVERBOSE, __VA_ARGS__) } while (false)
// Currently only actually shows a dialog box on Windows. // Currently only actually shows a dialog box on Windows.
bool HandleAssert(const char *function, const char *file, int line, const char *expression, const char* format, ...) bool HandleAssert(const char *function, const char *file, int line, const char *expression, const char* format, ...)

View file

@ -47,7 +47,7 @@ static const char level_to_char[8] = "-NEWIDV";
#define LOG_MSC_OUTPUTDEBUG false #define LOG_MSC_OUTPUTDEBUG false
#endif #endif
void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char *file, int line, const char* fmt, ...) { void GenericLog(LogLevel level, LogType type, const char *file, int line, const char* fmt, ...) {
if (g_bLogEnabledSetting && !(*g_bLogEnabledSetting)) if (g_bLogEnabledSetting && !(*g_bLogEnabledSetting))
return; return;
va_list args; va_list args;
@ -69,7 +69,7 @@ void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char
va_end(args); va_end(args);
} }
bool GenericLogEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type) { bool GenericLogEnabled(LogLevel level, LogType type) {
if (LogManager::GetInstance()) if (LogManager::GetInstance())
return (*g_bLogEnabledSetting) && LogManager::GetInstance()->IsEnabled(level, type); return (*g_bLogEnabledSetting) && LogManager::GetInstance()->IsEnabled(level, type);
return false; return false;
@ -78,55 +78,55 @@ bool GenericLogEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type) {
LogManager *LogManager::logManager_ = NULL; LogManager *LogManager::logManager_ = NULL;
struct LogNameTableEntry { struct LogNameTableEntry {
LogTypes::LOG_TYPE logType; LogType logType;
const char *name; const char *name;
}; };
static const LogNameTableEntry logTable[] = { static const LogNameTableEntry logTable[] = {
{LogTypes::SYSTEM, "SYSTEM"}, {LogType::SYSTEM, "SYSTEM"},
{LogTypes::BOOT, "BOOT"}, {LogType::BOOT, "BOOT"},
{LogTypes::COMMON, "COMMON"}, {LogType::COMMON, "COMMON"},
{LogTypes::CPU, "CPU"}, {LogType::CPU, "CPU"},
{LogTypes::FILESYS, "FILESYS"}, {LogType::FILESYS, "FILESYS"},
{LogTypes::G3D, "G3D"}, {LogType::G3D, "G3D"},
{LogTypes::HLE, "HLE"}, {LogType::HLE, "HLE"},
{LogTypes::JIT, "JIT"}, {LogType::JIT, "JIT"},
{LogTypes::LOADER, "LOADER"}, {LogType::LOADER, "LOADER"},
{LogTypes::ME, "ME"}, // Media Engine {LogType::ME, "ME"}, // Media Engine
{LogTypes::MEMMAP, "MEMMAP"}, {LogType::MEMMAP, "MEMMAP"},
{LogTypes::SASMIX, "SASMIX"}, {LogType::SASMIX, "SASMIX"},
{LogTypes::SAVESTATE, "SAVESTATE"}, {LogType::SAVESTATE, "SAVESTATE"},
{LogTypes::FRAMEBUF, "FRAMEBUF"}, {LogType::FRAMEBUF, "FRAMEBUF"},
{LogTypes::AUDIO, "AUDIO"}, {LogType::AUDIO, "AUDIO"},
{LogTypes::IO, "IO"}, {LogType::IO, "IO"},
{LogTypes::SCEAUDIO, "SCEAUDIO"}, {LogType::SCEAUDIO, "SCEAUDIO"},
{LogTypes::SCECTRL, "SCECTRL"}, {LogType::SCECTRL, "SCECTRL"},
{LogTypes::SCEDISPLAY, "SCEDISP"}, {LogType::SCEDISPLAY, "SCEDISP"},
{LogTypes::SCEFONT, "SCEFONT"}, {LogType::SCEFONT, "SCEFONT"},
{LogTypes::SCEGE, "SCEGE"}, {LogType::SCEGE, "SCEGE"},
{LogTypes::SCEINTC, "SCEINTC"}, {LogType::SCEINTC, "SCEINTC"},
{LogTypes::SCEIO, "SCEIO"}, {LogType::SCEIO, "SCEIO"},
{LogTypes::SCEKERNEL, "SCEKERNEL"}, {LogType::SCEKERNEL, "SCEKERNEL"},
{LogTypes::SCEMODULE, "SCEMODULE"}, {LogType::SCEMODULE, "SCEMODULE"},
{LogTypes::SCENET, "SCENET"}, {LogType::SCENET, "SCENET"},
{LogTypes::SCERTC, "SCERTC"}, {LogType::SCERTC, "SCERTC"},
{LogTypes::SCESAS, "SCESAS"}, {LogType::SCESAS, "SCESAS"},
{LogTypes::SCEUTILITY, "SCEUTIL"}, {LogType::SCEUTILITY, "SCEUTIL"},
{LogTypes::SCEMISC, "SCEMISC"}, {LogType::SCEMISC, "SCEMISC"},
}; };
LogManager::LogManager(bool *enabledSetting) { LogManager::LogManager(bool *enabledSetting) {
g_bLogEnabledSetting = enabledSetting; g_bLogEnabledSetting = enabledSetting;
for (size_t i = 0; i < ARRAY_SIZE(logTable); i++) { for (size_t i = 0; i < ARRAY_SIZE(logTable); i++) {
_assert_msg_(i == logTable[i].logType, "Bad logtable at %i", (int)i); _assert_msg_((LogType)i == logTable[i].logType, "Bad logtable at %i", (int)i);
truncate_cpy(log_[logTable[i].logType].m_shortName, logTable[i].name); truncate_cpy(log_[(size_t)logTable[i].logType].m_shortName, logTable[i].name);
log_[logTable[i].logType].enabled = true; log_[(size_t)logTable[i].logType].enabled = true;
#if defined(_DEBUG) #if defined(_DEBUG)
log_[logTable[i].logType].level = LogTypes::LDEBUG; log_[(size_t)logTable[i].logType].level = LogLevel::LDEBUG;
#else #else
log_[logTable[i].logType].level = LogTypes::LINFO; log_[(size_t)logTable[i].logType].level = LogLevel::LINFO;
#endif #endif
} }
@ -158,7 +158,7 @@ LogManager::LogManager(bool *enabledSetting) {
} }
LogManager::~LogManager() { LogManager::~LogManager() {
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) { for (int i = 0; i < (int)LogType::NUMBER_OF_LOGS; ++i) {
#if !defined(MOBILE_DEVICE) || defined(_DEBUG) #if !defined(MOBILE_DEVICE) || defined(_DEBUG)
RemoveListener(fileLog_); RemoveListener(fileLog_);
RemoveListener(consoleLog_); RemoveListener(consoleLog_);
@ -194,25 +194,25 @@ void LogManager::ChangeFileLog(const char *filename) {
} }
void LogManager::SaveConfig(Section *section) { void LogManager::SaveConfig(Section *section) {
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++) { for (int i = 0; i < (int)LogType::NUMBER_OF_LOGS; i++) {
section->Set((std::string(log_[i].m_shortName) + "Enabled").c_str(), log_[i].enabled); section->Set((std::string(log_[i].m_shortName) + "Enabled").c_str(), log_[i].enabled);
section->Set((std::string(log_[i].m_shortName) + "Level").c_str(), (int)log_[i].level); section->Set((std::string(log_[i].m_shortName) + "Level").c_str(), (int)log_[i].level);
} }
} }
void LogManager::LoadConfig(const Section *section, bool debugDefaults) { void LogManager::LoadConfig(const Section *section, bool debugDefaults) {
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++) { for (int i = 0; i < (int)LogType::NUMBER_OF_LOGS; i++) {
bool enabled = false; bool enabled = false;
int level = 0; int level = 0;
section->Get((std::string(log_[i].m_shortName) + "Enabled").c_str(), &enabled, true); section->Get((std::string(log_[i].m_shortName) + "Enabled").c_str(), &enabled, true);
section->Get((std::string(log_[i].m_shortName) + "Level").c_str(), &level, debugDefaults ? (int)LogTypes::LDEBUG : (int)LogTypes::LERROR); section->Get((std::string(log_[i].m_shortName) + "Level").c_str(), &level, (int)(debugDefaults ? LogLevel::LDEBUG : LogLevel::LERROR));
log_[i].enabled = enabled; log_[i].enabled = enabled;
log_[i].level = (LogTypes::LOG_LEVELS)level; log_[i].level = (LogLevel)level;
} }
} }
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(LogLevel level, LogType type, const char *file, int line, const char *format, va_list args) {
const LogChannel &log = log_[type]; const LogChannel &log = log_[(size_t)type];
if (level > log.level || !log.enabled) if (level > log.level || !log.enabled)
return; return;
@ -268,8 +268,8 @@ void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const
} }
} }
bool LogManager::IsEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type) { bool LogManager::IsEnabled(LogLevel level, LogType type) {
LogChannel &log = log_[type]; LogChannel &log = log_[(size_t)type];
if (level > log.level || !log.enabled) if (level > log.level || !log.enabled)
return false; return false;
return true; return true;

View file

@ -37,7 +37,7 @@ extern const char *hleCurrentThreadName;
struct LogMessage { struct LogMessage {
char timestamp[16]; char timestamp[16];
char header[64]; // Filename/thread/etc. in front. char header[64]; // Filename/thread/etc. in front.
LogTypes::LOG_LEVELS level; LogLevel level;
const char *log; const char *log;
std::string msg; // The actual log message. std::string msg; // The actual log message.
}; };
@ -83,7 +83,7 @@ public:
int GetCount() const { return count_ < MAX_LOGS ? count_ : MAX_LOGS; } int GetCount() const { return count_ < MAX_LOGS ? count_ : MAX_LOGS; }
const char *TextAt(int i) const { return messages_[(curMessage_ - i - 1) & (MAX_LOGS - 1)].msg.c_str(); } const char *TextAt(int i) const { return messages_[(curMessage_ - i - 1) & (MAX_LOGS - 1)].msg.c_str(); }
LogTypes::LOG_LEVELS LevelAt(int i) const { return messages_[(curMessage_ - i - 1) & (MAX_LOGS - 1)].level; } LogLevel LevelAt(int i) const { return messages_[(curMessage_ - i - 1) & (MAX_LOGS - 1)].level; }
private: private:
enum { MAX_LOGS = 128 }; enum { MAX_LOGS = 128 };
@ -99,7 +99,7 @@ private:
struct LogChannel { struct LogChannel {
char m_shortName[32]{}; char m_shortName[32]{};
LogTypes::LOG_LEVELS level; LogLevel level;
bool enabled; bool enabled;
}; };
@ -114,7 +114,7 @@ private:
LogManager(const LogManager &) = delete; LogManager(const LogManager &) = delete;
void operator=(const LogManager &) = delete; void operator=(const LogManager &) = delete;
LogChannel log_[LogTypes::NUMBER_OF_LOGS]; LogChannel log_[(size_t)LogType::NUMBER_OF_LOGS];
FileLogListener *fileLog_ = nullptr; FileLogListener *fileLog_ = nullptr;
ConsoleListener *consoleLog_ = nullptr; ConsoleListener *consoleLog_ = nullptr;
OutputDebugStringLogListener *debuggerLog_ = nullptr; OutputDebugStringLogListener *debuggerLog_ = nullptr;
@ -128,33 +128,33 @@ public:
void AddListener(LogListener *listener); void AddListener(LogListener *listener);
void RemoveListener(LogListener *listener); void RemoveListener(LogListener *listener);
static u32 GetMaxLevel() { return MAX_LOGLEVEL; } static u32 GetMaxLevel() { return (u32)MAX_LOGLEVEL; }
static int GetNumChannels() { return LogTypes::NUMBER_OF_LOGS; } static int GetNumChannels() { return (int)LogType::NUMBER_OF_LOGS; }
void Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, void Log(LogLevel level, LogType type,
const char *file, int line, const char *fmt, va_list args); const char *file, int line, const char *fmt, va_list args);
bool IsEnabled(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type); bool IsEnabled(LogLevel level, LogType type);
LogChannel *GetLogChannel(LogTypes::LOG_TYPE type) { LogChannel *GetLogChannel(LogType type) {
return &log_[type]; return &log_[(size_t)type];
} }
void SetLogLevel(LogTypes::LOG_TYPE type, LogTypes::LOG_LEVELS level) { void SetLogLevel(LogType type, LogLevel level) {
log_[type].level = level; log_[(size_t)type].level = level;
} }
void SetAllLogLevels(LogTypes::LOG_LEVELS level) { void SetAllLogLevels(LogLevel level) {
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) { for (int i = 0; i < (int)LogType::NUMBER_OF_LOGS; ++i) {
log_[i].level = level; log_[i].level = level;
} }
} }
void SetEnabled(LogTypes::LOG_TYPE type, bool enable) { void SetEnabled(LogType type, bool enable) {
log_[type].enabled = enable; log_[(size_t)type].enabled = enable;
} }
LogTypes::LOG_LEVELS GetLogLevel(LogTypes::LOG_TYPE type) { LogLevel GetLogLevel(LogType type) {
return log_[type].level; return log_[(size_t)type].level;
} }
ConsoleListener *GetConsoleListener() const { ConsoleListener *GetConsoleListener() const {

View file

@ -160,14 +160,14 @@ void HandleDebuggerRequest(const http::ServerRequest &request) {
ws->SetTextHandler([&](const std::string &t) { ws->SetTextHandler([&](const std::string &t) {
JsonReader reader(t.c_str(), t.size()); JsonReader reader(t.c_str(), t.size());
if (!reader.ok()) { if (!reader.ok()) {
ws->Send(DebuggerErrorEvent("Bad message: invalid JSON", LogTypes::LERROR)); ws->Send(DebuggerErrorEvent("Bad message: invalid JSON", LogLevel::LERROR));
return; return;
} }
const JsonGet root = reader.root(); const JsonGet root = reader.root();
const char *event = root ? root.getString("event", nullptr) : nullptr; const char *event = root ? root.getString("event", nullptr) : nullptr;
if (!event) { if (!event) {
ws->Send(DebuggerErrorEvent("Bad message: no event property", LogTypes::LERROR, root)); ws->Send(DebuggerErrorEvent("Bad message: no event property", LogLevel::LERROR, root));
return; return;
} }
@ -185,7 +185,7 @@ void HandleDebuggerRequest(const http::ServerRequest &request) {
} }
}); });
ws->SetBinaryHandler([&](const std::vector<uint8_t> &d) { ws->SetBinaryHandler([&](const std::vector<uint8_t> &d) {
ws->Send(DebuggerErrorEvent("Bad message", LogTypes::LERROR)); ws->Send(DebuggerErrorEvent("Bad message", LogLevel::LERROR));
}); });
while (ws->Process(highActivity ? 1.0f / 1000.0f : 1.0f / 60.0f)) { while (ws->Process(highActivity ? 1.0f / 1000.0f : 1.0f / 60.0f)) {

View file

@ -95,7 +95,7 @@ struct DebuggerLogEvent {
j.writeString("timestamp", l.timestamp); j.writeString("timestamp", l.timestamp);
j.writeString("header", l.header); j.writeString("header", l.header);
j.writeString("message", l.msg); j.writeString("message", l.msg);
j.writeInt("level", l.level); j.writeInt("level", (int)l.level);
j.writeString("channel", l.log); j.writeString("channel", l.log);
j.end(); j.end();
return j.str(); return j.str();

View file

@ -42,7 +42,7 @@ struct WebSocketClientInfo {
}; };
struct DebuggerErrorEvent { struct DebuggerErrorEvent {
DebuggerErrorEvent(const std::string m, LogTypes::LOG_LEVELS l, const JsonGet data = JsonValue(JSON_NULL)) DebuggerErrorEvent(const std::string m, LogLevel l, const JsonGet data = JsonValue(JSON_NULL))
: message(m), level(l) { : message(m), level(l) {
// Need to format right away, before it's out of scope. // Need to format right away, before it's out of scope.
if (data) { if (data) {
@ -53,7 +53,7 @@ struct DebuggerErrorEvent {
} }
std::string message; std::string message;
LogTypes::LOG_LEVELS level; LogLevel level;
std::string ticketRaw; std::string ticketRaw;
operator std::string() const { operator std::string() const {
@ -61,7 +61,7 @@ struct DebuggerErrorEvent {
j.begin(); j.begin();
j.writeString("event", "error"); j.writeString("event", "error");
j.writeString("message", message); j.writeString("message", message);
j.writeInt("level", level); j.writeInt("level", (int)level);
if (!ticketRaw.empty()) { if (!ticketRaw.empty()) {
j.writeRaw("ticket", ticketRaw); j.writeRaw("ticket", ticketRaw);
} }
@ -88,7 +88,7 @@ struct DebuggerRequest {
WebSocketClientInfo *client; WebSocketClientInfo *client;
void Fail(const std::string &message) { void Fail(const std::string &message) {
ws->Send(DebuggerErrorEvent(message, LogTypes::LERROR, data)); ws->Send(DebuggerErrorEvent(message, LogLevel::LERROR, data));
responseSent_ = true; responseSent_ = true;
} }

View file

@ -813,7 +813,7 @@ bool VirtualDiscFileSystem::RemoveFile(const std::string &filename)
return false; return false;
} }
void VirtualDiscFileSystem::HandlerLogger(void *arg, HandlerHandle handle, LogTypes::LOG_LEVELS level, const char *msg) { void VirtualDiscFileSystem::HandlerLogger(void *arg, HandlerHandle handle, LogLevel level, const char *msg) {
VirtualDiscFileSystem *sys = static_cast<VirtualDiscFileSystem *>(arg); VirtualDiscFileSystem *sys = static_cast<VirtualDiscFileSystem *>(arg);
// TODO: Probably could do this smarter / use a lookup. // TODO: Probably could do this smarter / use a lookup.
@ -826,9 +826,9 @@ void VirtualDiscFileSystem::HandlerLogger(void *arg, HandlerHandle handle, LogTy
} }
if (filename != NULL) { if (filename != NULL) {
GENERIC_LOG(LogTypes::FILESYS, level, "%s: %s", filename, msg); GENERIC_LOG(LogType::FILESYS, level, "%s: %s", filename, msg);
} else { } else {
GENERIC_LOG(LogTypes::FILESYS, level, "%s", msg); GENERIC_LOG(LogType::FILESYS, level, "%s", msg);
} }
} }

View file

@ -64,9 +64,9 @@ private:
typedef void *HandlerLibrary; typedef void *HandlerLibrary;
typedef int HandlerHandle; typedef int HandlerHandle;
typedef s64 HandlerOffset; typedef s64 HandlerOffset;
typedef void (*HandlerLogFunc)(void *arg, HandlerHandle handle, LogTypes::LOG_LEVELS level, const char *msg); typedef void (*HandlerLogFunc)(void *arg, HandlerHandle handle, LogLevel level, const char *msg);
static void HandlerLogger(void *arg, HandlerHandle handle, LogTypes::LOG_LEVELS level, const char *msg); static void HandlerLogger(void *arg, HandlerHandle handle, LogLevel level, const char *msg);
// The primary purpose of handlers is to make it easier to work with large archives. // The primary purpose of handlers is to make it easier to work with large archives.
// However, they have other uses as well, such as patching individual files. // However, they have other uses as well, such as patching individual files.

View file

@ -853,7 +853,7 @@ size_t hleFormatLogArgs(char *message, size_t sz, const char *argmask) {
return used; return used;
} }
void hleDoLogInternal(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, u64 res, const char *file, int line, const char *reportTag, char retmask, const char *reason, const char *formatted_reason) { void hleDoLogInternal(LogType t, LogLevel level, u64 res, const char *file, int line, const char *reportTag, char retmask, const char *reason, const char *formatted_reason) {
char formatted_args[4096]; char formatted_args[4096];
const char *funcName = "?"; const char *funcName = "?";
u32 funcFlags = 0; u32 funcFlags = 0;

View file

@ -155,11 +155,11 @@ const HLEFunction *GetSyscallFuncPointer(MIPSOpcode op);
// For jit, takes arg: const HLEFunction * // For jit, takes arg: const HLEFunction *
void *GetQuickSyscallFunc(MIPSOpcode op); void *GetQuickSyscallFunc(MIPSOpcode op);
void hleDoLogInternal(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, u64 res, const char *file, int line, const char *reportTag, char retmask, const char *reason, const char *formatted_reason); void hleDoLogInternal(LogType t, LogLevel level, u64 res, const char *file, int line, const char *reportTag, char retmask, const char *reason, const char *formatted_reason);
template <typename T> template <typename T>
T hleDoLog(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, T res, const char *file, int line, const char *reportTag, char retmask, const char *reason, ...) { T hleDoLog(LogType t, LogLevel level, T res, const char *file, int line, const char *reportTag, char retmask, const char *reason, ...) {
if (level > MAX_LOGLEVEL || !GenericLogEnabled(level, t)) { if ((int)level > MAX_LOGLEVEL || !GenericLogEnabled(level, t)) {
return res; return res;
} }
@ -186,8 +186,8 @@ T hleDoLog(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, T res, const char *
} }
template <typename T> template <typename T>
T hleDoLog(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, T res, const char *file, int line, const char *reportTag, char retmask) { T hleDoLog(LogType t, LogLevel level, T res, const char *file, int line, const char *reportTag, char retmask) {
if ((level > MAX_LOGLEVEL || !GenericLogEnabled(level, t)) && !reportTag) { if (((int)level > MAX_LOGLEVEL || !GenericLogEnabled(level, t)) && !reportTag) {
return res; return res;
} }
@ -216,7 +216,7 @@ T hleDoLog(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, T res, const char *
#define HLE_LOG_LVERBOSE LVERBOSE #define HLE_LOG_LVERBOSE LVERBOSE
#endif #endif
#define hleLogHelper(t, level, res, retmask, ...) hleDoLog(LogTypes::t, LogTypes::level, res, __FILE__, __LINE__, nullptr, retmask, ##__VA_ARGS__) #define hleLogHelper(t, level, res, retmask, ...) hleDoLog(LogType::t, LogLevel::level, res, __FILE__, __LINE__, nullptr, retmask, ##__VA_ARGS__)
#define hleLogError(t, res, ...) hleLogHelper(t, LERROR, res, 'x', ##__VA_ARGS__) #define hleLogError(t, res, ...) hleLogHelper(t, LERROR, res, 'x', ##__VA_ARGS__)
#define hleLogWarning(t, res, ...) hleLogHelper(t, LWARNING, res, 'x', ##__VA_ARGS__) #define hleLogWarning(t, res, ...) hleLogHelper(t, LWARNING, res, 'x', ##__VA_ARGS__)
#define hleLogDebug(t, res, ...) hleLogHelper(t, HLE_LOG_LDEBUG, res, 'x', ##__VA_ARGS__) #define hleLogDebug(t, res, ...) hleLogHelper(t, HLE_LOG_LDEBUG, res, 'x', ##__VA_ARGS__)
@ -228,7 +228,7 @@ T hleDoLog(LogTypes::LOG_TYPE t, LogTypes::LOG_LEVELS level, T res, const char *
#define hleLogSuccessVerboseX(t, res, ...) hleLogHelper(t, HLE_LOG_LVERBOSE, res, 'x', ##__VA_ARGS__) #define hleLogSuccessVerboseX(t, res, ...) hleLogHelper(t, HLE_LOG_LVERBOSE, res, 'x', ##__VA_ARGS__)
#define hleLogSuccessVerboseI(t, res, ...) hleLogHelper(t, HLE_LOG_LVERBOSE, res, 'i', ##__VA_ARGS__) #define hleLogSuccessVerboseI(t, res, ...) hleLogHelper(t, HLE_LOG_LVERBOSE, res, 'i', ##__VA_ARGS__)
#define hleReportError(t, res, ...) hleDoLog(LogTypes::t, LogTypes::LERROR, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) #define hleReportError(t, res, ...) hleDoLog(LogType::t, LogLevel::LERROR, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__)
#define hleReportWarning(t, res, ...) hleDoLog(LogTypes::t, LogTypes::LWARNING, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) #define hleReportWarning(t, res, ...) hleDoLog(LogType::t, LogLevel::LWARNING, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__)
#define hleReportDebug(t, res, ...) hleDoLog(LogTypes::t, LogTypes::HLE_LOG_LDEBUG, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) #define hleReportDebug(t, res, ...) hleDoLog(LogType::t, LogLevel::HLE_LOG_LDEBUG, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__)
#define hleReportVerbose(t, res, ...) hleDoLog(LogTypes::t, LogTypes::HLE_LOG_LVERBOSE, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__) #define hleReportVerbose(t, res, ...) hleDoLog(LogType::t, LogLevel::HLE_LOG_LVERBOSE, res, __FILE__, __LINE__, "", 'x', ##__VA_ARGS__)

View file

@ -224,12 +224,12 @@ void LogScreen::UpdateLog() {
TextView *v = vert_->Add(new TextView(ring->TextAt(i), FLAG_DYNAMIC_ASCII, false)); TextView *v = vert_->Add(new TextView(ring->TextAt(i), FLAG_DYNAMIC_ASCII, false));
uint32_t color = 0xFFFFFF; uint32_t color = 0xFFFFFF;
switch (ring->LevelAt(i)) { switch (ring->LevelAt(i)) {
case LogTypes::LDEBUG: color = 0xE0E0E0; break; case LogLevel::LDEBUG: color = 0xE0E0E0; break;
case LogTypes::LWARNING: color = 0x50FFFF; break; case LogLevel::LWARNING: color = 0x50FFFF; break;
case LogTypes::LERROR: color = 0x5050FF; break; case LogLevel::LERROR: color = 0x5050FF; break;
case LogTypes::LNOTICE: color = 0x30FF30; break; case LogLevel::LNOTICE: color = 0x30FF30; break;
case LogTypes::LINFO: color = 0xFFFFFF; break; case LogLevel::LINFO: color = 0xFFFFFF; break;
case LogTypes::LVERBOSE: color = 0xC0C0C0; break; case LogLevel::LVERBOSE: color = 0xC0C0C0; break;
} }
v->SetTextColor(0xFF000000 | color); v->SetTextColor(0xFF000000 | color);
} }
@ -308,7 +308,7 @@ void LogConfigScreen::CreateViews() {
GridLayout *grid = vert->Add(new GridLayoutList(gridsettings, new LayoutParams(FILL_PARENT, WRAP_CONTENT))); GridLayout *grid = vert->Add(new GridLayoutList(gridsettings, new LayoutParams(FILL_PARENT, WRAP_CONTENT)));
for (int i = 0; i < LogManager::GetNumChannels(); i++) { for (int i = 0; i < LogManager::GetNumChannels(); i++) {
LogTypes::LOG_TYPE type = (LogTypes::LOG_TYPE)i; LogType type = (LogType)i;
LogChannel *chan = logMan->GetLogChannel(type); LogChannel *chan = logMan->GetLogChannel(type);
LinearLayout *row = new LinearLayout(ORIENT_HORIZONTAL, new LinearLayoutParams(cellSize - 50, WRAP_CONTENT)); LinearLayout *row = new LinearLayout(ORIENT_HORIZONTAL, new LinearLayoutParams(cellSize - 50, WRAP_CONTENT));
row->SetSpacing(0); row->SetSpacing(0);
@ -321,7 +321,7 @@ void LogConfigScreen::CreateViews() {
UI::EventReturn LogConfigScreen::OnToggleAll(UI::EventParams &e) { UI::EventReturn LogConfigScreen::OnToggleAll(UI::EventParams &e) {
LogManager *logMan = LogManager::GetInstance(); LogManager *logMan = LogManager::GetInstance();
for (int i = 0; i < LogManager::GetNumChannels(); i++) { for (int i = 0; i < LogManager::GetNumChannels(); i++) {
LogChannel *chan = logMan->GetLogChannel((LogTypes::LOG_TYPE)i); LogChannel *chan = logMan->GetLogChannel((LogType)i);
chan->enabled = !chan->enabled; chan->enabled = !chan->enabled;
} }
return UI::EVENT_DONE; return UI::EVENT_DONE;
@ -330,7 +330,7 @@ UI::EventReturn LogConfigScreen::OnToggleAll(UI::EventParams &e) {
UI::EventReturn LogConfigScreen::OnEnableAll(UI::EventParams &e) { UI::EventReturn LogConfigScreen::OnEnableAll(UI::EventParams &e) {
LogManager *logMan = LogManager::GetInstance(); LogManager *logMan = LogManager::GetInstance();
for (int i = 0; i < LogManager::GetNumChannels(); i++) { for (int i = 0; i < LogManager::GetNumChannels(); i++) {
LogChannel *chan = logMan->GetLogChannel((LogTypes::LOG_TYPE)i); LogChannel *chan = logMan->GetLogChannel((LogType)i);
chan->enabled = true; chan->enabled = true;
} }
return UI::EVENT_DONE; return UI::EVENT_DONE;
@ -339,7 +339,7 @@ UI::EventReturn LogConfigScreen::OnEnableAll(UI::EventParams &e) {
UI::EventReturn LogConfigScreen::OnDisableAll(UI::EventParams &e) { UI::EventReturn LogConfigScreen::OnDisableAll(UI::EventParams &e) {
LogManager *logMan = LogManager::GetInstance(); LogManager *logMan = LogManager::GetInstance();
for (int i = 0; i < LogManager::GetNumChannels(); i++) { for (int i = 0; i < LogManager::GetNumChannels(); i++) {
LogChannel *chan = logMan->GetLogChannel((LogTypes::LOG_TYPE)i); LogChannel *chan = logMan->GetLogChannel((LogType)i);
chan->enabled = false; chan->enabled = false;
} }
return UI::EVENT_DONE; return UI::EVENT_DONE;
@ -377,10 +377,10 @@ void LogLevelScreen::OnCompleted(DialogResult result) {
LogManager *logMan = LogManager::GetInstance(); LogManager *logMan = LogManager::GetInstance();
for (int i = 0; i < LogManager::GetNumChannels(); ++i) { for (int i = 0; i < LogManager::GetNumChannels(); ++i) {
LogTypes::LOG_TYPE type = (LogTypes::LOG_TYPE)i; LogType type = (LogType)i;
LogChannel *chan = logMan->GetLogChannel(type); LogChannel *chan = logMan->GetLogChannel(type);
if (chan->enabled) if (chan->enabled)
chan->level = (LogTypes::LOG_LEVELS)(selected + 1); chan->level = (LogLevel)(selected + 1);
} }
} }

View file

@ -188,18 +188,18 @@ public:
void Log(const LogMessage &message) override { void Log(const LogMessage &message) override {
// Log with simplified headers as Android already provides timestamp etc. // Log with simplified headers as Android already provides timestamp etc.
switch (message.level) { switch (message.level) {
case LogTypes::LVERBOSE: case LogLevel::LVERBOSE:
case LogTypes::LDEBUG: case LogLevel::LDEBUG:
case LogTypes::LINFO: case LogLevel::LINFO:
printf("INFO [%s] %s", message.log, message.msg.c_str()); printf("INFO [%s] %s", message.log, message.msg.c_str());
break; break;
case LogTypes::LERROR: case LogLevel::LERROR:
printf("ERR [%s] %s", message.log, message.msg.c_str()); printf("ERR [%s] %s", message.log, message.msg.c_str());
break; break;
case LogTypes::LWARNING: case LogLevel::LWARNING:
printf("WARN [%s] %s", message.log, message.msg.c_str()); printf("WARN [%s] %s", message.log, message.msg.c_str());
break; break;
case LogTypes::LNOTICE: case LogLevel::LNOTICE:
default: default:
printf("NOTE [%s] !!! %s", message.log, message.msg.c_str()); printf("NOTE [%s] !!! %s", message.log, message.msg.c_str());
break; break;
@ -567,9 +567,9 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch
boot_filename.clear(); boot_filename.clear();
// Parse command line // Parse command line
LogTypes::LOG_LEVELS logLevel = LogTypes::LINFO; LogLevel logLevel = LogLevel::LINFO;
bool forceLogLevel = false; bool forceLogLevel = false;
const auto setLogLevel = [&logLevel, &forceLogLevel](LogTypes::LOG_LEVELS level) { const auto setLogLevel = [&logLevel, &forceLogLevel](LogLevel level) {
logLevel = level; logLevel = level;
forceLogLevel = true; forceLogLevel = true;
}; };
@ -587,12 +587,12 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch
case 'd': case 'd':
// Enable debug logging // Enable debug logging
// Note that you must also change the max log level in Log.h. // Note that you must also change the max log level in Log.h.
setLogLevel(LogTypes::LDEBUG); setLogLevel(LogLevel::LDEBUG);
break; break;
case 'v': case 'v':
// Enable verbose logging // Enable verbose logging
// Note that you must also change the max log level in Log.h. // Note that you must also change the max log level in Log.h.
setLogLevel(LogTypes::LVERBOSE); setLogLevel(LogLevel::LVERBOSE);
break; break;
case 'j': case 'j':
g_Config.iCpuCore = (int)CPUCore::JIT; g_Config.iCpuCore = (int)CPUCore::JIT;
@ -612,7 +612,7 @@ void NativeInit(int argc, const char *argv[], const char *savegame_dir, const ch
break; break;
case '-': case '-':
if (!strncmp(argv[i], "--loglevel=", strlen("--loglevel=")) && strlen(argv[i]) > strlen("--loglevel=")) if (!strncmp(argv[i], "--loglevel=", strlen("--loglevel=")) && strlen(argv[i]) > strlen("--loglevel="))
setLogLevel(static_cast<LogTypes::LOG_LEVELS>(std::atoi(argv[i] + strlen("--loglevel=")))); setLogLevel(static_cast<LogLevel>(std::atoi(argv[i] + strlen("--loglevel="))));
if (!strncmp(argv[i], "--log=", strlen("--log=")) && strlen(argv[i]) > strlen("--log=")) if (!strncmp(argv[i], "--log=", strlen("--log=")) && strlen(argv[i]) > strlen("--log="))
fileToLog = argv[i] + strlen("--log="); fileToLog = argv[i] + strlen("--log=");
if (!strncmp(argv[i], "--state=", strlen("--state=")) && strlen(argv[i]) > strlen("--state=")) if (!strncmp(argv[i], "--state=", strlen("--state=")) && strlen(argv[i]) > strlen("--state="))

View file

@ -127,7 +127,7 @@ PPSSPP_UWPMain::PPSSPP_UWPMain(App ^app, const std::shared_ptr<DX::DeviceResourc
g_Config.iGPUBackend = (int)GPUBackend::DIRECT3D11; g_Config.iGPUBackend = (int)GPUBackend::DIRECT3D11;
if (debugLogLevel) { if (debugLogLevel) {
LogManager::GetInstance()->SetAllLogLevels(LogTypes::LDEBUG); LogManager::GetInstance()->SetAllLogLevels(LogLevel::LDEBUG);
} }
// Set log file location // Set log file location

View file

@ -972,7 +972,7 @@ int WINAPI WinMain(HINSTANCE _hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLin
LogManager::GetInstance()->GetConsoleListener()->Init(showLog, 150, 120, "PPSSPP Debug Console"); LogManager::GetInstance()->GetConsoleListener()->Init(showLog, 150, 120, "PPSSPP Debug Console");
if (debugLogLevel) { if (debugLogLevel) {
LogManager::GetInstance()->SetAllLogLevels(LogTypes::LDEBUG); LogManager::GetInstance()->SetAllLogLevels(LogLevel::LDEBUG);
} }
// This still seems to improve performance noticeably. // This still seems to improve performance noticeably.

View file

@ -202,10 +202,10 @@ int utimensat(int fd, const char *path, const struct timespec times[2]) {
void AndroidLogger::Log(const LogMessage &message) { void AndroidLogger::Log(const LogMessage &message) {
int mode; int mode;
switch (message.level) { switch (message.level) {
case LogTypes::LWARNING: case LogLevel::LWARNING:
mode = ANDROID_LOG_WARN; mode = ANDROID_LOG_WARN;
break; break;
case LogTypes::LERROR: case LogLevel::LERROR:
mode = ANDROID_LOG_ERROR; mode = ANDROID_LOG_ERROR;
break; break;
default: default:

View file

@ -70,22 +70,22 @@ class PrintfLogger : public LogListener {
public: public:
void Log(const LogMessage &message) override { void Log(const LogMessage &message) override {
switch (message.level) { switch (message.level) {
case LogTypes::LVERBOSE: case LogLevel::LVERBOSE:
fprintf(stderr, "V %s", message.msg.c_str()); fprintf(stderr, "V %s", message.msg.c_str());
break; break;
case LogTypes::LDEBUG: case LogLevel::LDEBUG:
fprintf(stderr, "D %s", message.msg.c_str()); fprintf(stderr, "D %s", message.msg.c_str());
break; break;
case LogTypes::LINFO: case LogLevel::LINFO:
fprintf(stderr, "I %s", message.msg.c_str()); fprintf(stderr, "I %s", message.msg.c_str());
break; break;
case LogTypes::LERROR: case LogLevel::LERROR:
fprintf(stderr, "E %s", message.msg.c_str()); fprintf(stderr, "E %s", message.msg.c_str());
break; break;
case LogTypes::LWARNING: case LogLevel::LWARNING:
fprintf(stderr, "W %s", message.msg.c_str()); fprintf(stderr, "W %s", message.msg.c_str());
break; break;
case LogTypes::LNOTICE: case LogLevel::LNOTICE:
default: default:
fprintf(stderr, "N %s", message.msg.c_str()); fprintf(stderr, "N %s", message.msg.c_str());
break; break;
@ -428,10 +428,10 @@ int main(int argc, const char* argv[])
PrintfLogger *printfLogger = new PrintfLogger(); PrintfLogger *printfLogger = new PrintfLogger();
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++) { for (int i = 0; i < (int)LogType::NUMBER_OF_LOGS; i++) {
LogTypes::LOG_TYPE type = (LogTypes::LOG_TYPE)i; LogType type = (LogType)i;
logman->SetEnabled(type, fullLog); logman->SetEnabled(type, fullLog);
logman->SetLogLevel(type, LogTypes::LDEBUG); logman->SetLogLevel(type, LogLevel::LDEBUG);
} }
logman->AddListener(printfLogger); logman->AddListener(printfLogger);

View file

@ -239,22 +239,22 @@ class PrintfLogger : public LogListener
{ {
switch (message.level) switch (message.level)
{ {
case LogTypes::LVERBOSE: case LogLevel::LVERBOSE:
case LogTypes::LDEBUG: case LogLevel::LDEBUG:
log_(RETRO_LOG_DEBUG, "[%s] %s", log_(RETRO_LOG_DEBUG, "[%s] %s",
message.log, message.msg.c_str()); message.log, message.msg.c_str());
break; break;
case LogTypes::LERROR: case LogLevel::LERROR:
log_(RETRO_LOG_ERROR, "[%s] %s", log_(RETRO_LOG_ERROR, "[%s] %s",
message.log, message.msg.c_str()); message.log, message.msg.c_str());
break; break;
case LogTypes::LNOTICE: case LogLevel::LNOTICE:
case LogTypes::LWARNING: case LogLevel::LWARNING:
log_(RETRO_LOG_WARN, "[%s] %s", log_(RETRO_LOG_WARN, "[%s] %s",
message.log, message.msg.c_str()); message.log, message.msg.c_str());
break; break;
case LogTypes::LINFO: case LogLevel::LINFO:
default: default:
log_(RETRO_LOG_INFO, "[%s] %s", log_(RETRO_LOG_INFO, "[%s] %s",
message.log, message.msg.c_str()); message.log, message.msg.c_str());
@ -1081,7 +1081,7 @@ void retro_init(void)
logman->RemoveListener(logman->GetDebuggerListener()); logman->RemoveListener(logman->GetDebuggerListener());
logman->ChangeFileLog(nullptr); logman->ChangeFileLog(nullptr);
logman->AddListener(printfLogger); logman->AddListener(printfLogger);
logman->SetAllLogLevels(LogTypes::LINFO); logman->SetAllLogLevels(LogLevel::LINFO);
} }
g_Config.Load("", ""); g_Config.Load("", "");