|
@@ -17,7 +17,7 @@
|
|
|
namespace anki
|
|
namespace anki
|
|
|
{
|
|
{
|
|
|
|
|
|
|
|
-static const Array<const char*, static_cast<U>(Logger::MessageType::COUNT)> MSG_TEXT = {{"I", "E", "W", "F"}};
|
|
|
|
|
|
|
+static const Array<const char*, static_cast<U>(LoggerMessageType::COUNT)> MSG_TEXT = {{"I", "E", "W", "F"}};
|
|
|
|
|
|
|
|
Logger::Logger()
|
|
Logger::Logger()
|
|
|
{
|
|
{
|
|
@@ -28,17 +28,41 @@ Logger::~Logger()
|
|
|
{
|
|
{
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void Logger::addMessageHandler(void* data, MessageHandlerCallback callback)
|
|
|
|
|
|
|
+void Logger::addMessageHandler(void* data, LoggerMessageHandlerCallback callback)
|
|
|
{
|
|
{
|
|
|
|
|
+ LockGuard<Mutex> lock(m_mutex);
|
|
|
m_handlers[m_handlersCount++] = Handler(data, callback);
|
|
m_handlers[m_handlersCount++] = Handler(data, callback);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void Logger::removeMessageHandler(void* data, LoggerMessageHandlerCallback callback)
|
|
|
|
|
+{
|
|
|
|
|
+ LockGuard<Mutex> lock(m_mutex);
|
|
|
|
|
+
|
|
|
|
|
+ U i;
|
|
|
|
|
+ for(i = 0; i < m_handlersCount; ++i)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(m_handlers[i].m_callback == callback && m_handlers[i].m_data == data)
|
|
|
|
|
+ {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(i < m_handlersCount)
|
|
|
|
|
+ {
|
|
|
|
|
+ for(U j = i + 1; j < m_handlersCount; ++j)
|
|
|
|
|
+ {
|
|
|
|
|
+ m_handlers[j - 1] = m_handlers[j];
|
|
|
|
|
+ }
|
|
|
|
|
+ --m_handlersCount;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void Logger::write(
|
|
void Logger::write(
|
|
|
- const char* file, int line, const char* func, const char* subsystem, MessageType type, const char* msg)
|
|
|
|
|
|
|
+ const char* file, int line, const char* func, const char* subsystem, LoggerMessageType type, const char* msg)
|
|
|
{
|
|
{
|
|
|
m_mutex.lock();
|
|
m_mutex.lock();
|
|
|
|
|
|
|
|
- Info inf = {file, line, func, type, msg, subsystem};
|
|
|
|
|
|
|
+ LoggerMessageInfo inf = {file, line, func, type, msg, subsystem};
|
|
|
|
|
|
|
|
U count = m_handlersCount;
|
|
U count = m_handlersCount;
|
|
|
while(count-- != 0)
|
|
while(count-- != 0)
|
|
@@ -48,14 +72,14 @@ void Logger::write(
|
|
|
|
|
|
|
|
m_mutex.unlock();
|
|
m_mutex.unlock();
|
|
|
|
|
|
|
|
- if(type == MessageType::FATAL)
|
|
|
|
|
|
|
+ if(type == LoggerMessageType::FATAL)
|
|
|
{
|
|
{
|
|
|
abort();
|
|
abort();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void Logger::writeFormated(
|
|
void Logger::writeFormated(
|
|
|
- const char* file, int line, const char* func, const char* subsystem, MessageType type, const char* fmt, ...)
|
|
|
|
|
|
|
+ const char* file, int line, const char* func, const char* subsystem, LoggerMessageType type, const char* fmt, ...)
|
|
|
{
|
|
{
|
|
|
char buffer[1024 * 10];
|
|
char buffer[1024 * 10];
|
|
|
va_list args;
|
|
va_list args;
|
|
@@ -90,7 +114,7 @@ void Logger::writeFormated(
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void Logger::defaultSystemMessageHandler(void*, const Info& info)
|
|
|
|
|
|
|
+void Logger::defaultSystemMessageHandler(void*, const LoggerMessageInfo& info)
|
|
|
{
|
|
{
|
|
|
#if ANKI_OS == ANKI_OS_LINUX
|
|
#if ANKI_OS == ANKI_OS_LINUX
|
|
|
FILE* out = nullptr;
|
|
FILE* out = nullptr;
|
|
@@ -100,22 +124,22 @@ void Logger::defaultSystemMessageHandler(void*, const Info& info)
|
|
|
|
|
|
|
|
switch(info.m_type)
|
|
switch(info.m_type)
|
|
|
{
|
|
{
|
|
|
- case Logger::MessageType::NORMAL:
|
|
|
|
|
|
|
+ case LoggerMessageType::NORMAL:
|
|
|
out = stdout;
|
|
out = stdout;
|
|
|
terminalColor = "\033[0;32m";
|
|
terminalColor = "\033[0;32m";
|
|
|
terminalColorBg = "\033[1;42;37m";
|
|
terminalColorBg = "\033[1;42;37m";
|
|
|
break;
|
|
break;
|
|
|
- case Logger::MessageType::ERROR:
|
|
|
|
|
|
|
+ case LoggerMessageType::ERROR:
|
|
|
out = stderr;
|
|
out = stderr;
|
|
|
terminalColor = "\033[0;31m";
|
|
terminalColor = "\033[0;31m";
|
|
|
terminalColorBg = "\033[1;41;37m";
|
|
terminalColorBg = "\033[1;41;37m";
|
|
|
break;
|
|
break;
|
|
|
- case Logger::MessageType::WARNING:
|
|
|
|
|
|
|
+ case LoggerMessageType::WARNING:
|
|
|
out = stderr;
|
|
out = stderr;
|
|
|
terminalColor = "\033[2;33m";
|
|
terminalColor = "\033[2;33m";
|
|
|
terminalColorBg = "\033[1;43;37m";
|
|
terminalColorBg = "\033[1;43;37m";
|
|
|
break;
|
|
break;
|
|
|
- case Logger::MessageType::FATAL:
|
|
|
|
|
|
|
+ case LoggerMessageType::FATAL:
|
|
|
out = stderr;
|
|
out = stderr;
|
|
|
terminalColor = "\033[0;31m";
|
|
terminalColor = "\033[0;31m";
|
|
|
terminalColorBg = "\033[1;41;37m";
|
|
terminalColorBg = "\033[1;41;37m";
|
|
@@ -149,16 +173,16 @@ void Logger::defaultSystemMessageHandler(void*, const Info& info)
|
|
|
|
|
|
|
|
switch(info.m_type)
|
|
switch(info.m_type)
|
|
|
{
|
|
{
|
|
|
- case Logger::MessageType::NORMAL:
|
|
|
|
|
|
|
+ case LoggerMessageType::NORMAL:
|
|
|
andMsgType = ANDROID_LOG_INFO;
|
|
andMsgType = ANDROID_LOG_INFO;
|
|
|
break;
|
|
break;
|
|
|
- case Logger::MessageType::ERROR:
|
|
|
|
|
|
|
+ case LoggerMessageType::ERROR:
|
|
|
andMsgType = ANDROID_LOG_ERROR;
|
|
andMsgType = ANDROID_LOG_ERROR;
|
|
|
break;
|
|
break;
|
|
|
- case Logger::MessageType::WARNING:
|
|
|
|
|
|
|
+ case LoggerMessageType::WARNING:
|
|
|
andMsgType = ANDROID_LOG_WARN;
|
|
andMsgType = ANDROID_LOG_WARN;
|
|
|
break;
|
|
break;
|
|
|
- case Logger::MessageType::FATAL:
|
|
|
|
|
|
|
+ case LoggerMessageType::FATAL:
|
|
|
andMsgType = ANDROID_LOG_ERROR;
|
|
andMsgType = ANDROID_LOG_ERROR;
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
@@ -173,16 +197,16 @@ void Logger::defaultSystemMessageHandler(void*, const Info& info)
|
|
|
|
|
|
|
|
switch(info.m_type)
|
|
switch(info.m_type)
|
|
|
{
|
|
{
|
|
|
- case Logger::MessageType::NORMAL:
|
|
|
|
|
|
|
+ case LoggerMessageType::NORMAL:
|
|
|
out = stdout;
|
|
out = stdout;
|
|
|
break;
|
|
break;
|
|
|
- case Logger::MessageType::ERROR:
|
|
|
|
|
|
|
+ case LoggerMessageType::ERROR:
|
|
|
out = stderr;
|
|
out = stderr;
|
|
|
break;
|
|
break;
|
|
|
- case Logger::MessageType::WARNING:
|
|
|
|
|
|
|
+ case LoggerMessageType::WARNING:
|
|
|
out = stderr;
|
|
out = stderr;
|
|
|
break;
|
|
break;
|
|
|
- case Logger::MessageType::FATAL:
|
|
|
|
|
|
|
+ case LoggerMessageType::FATAL:
|
|
|
out = stderr;
|
|
out = stderr;
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
@@ -202,7 +226,7 @@ void Logger::defaultSystemMessageHandler(void*, const Info& info)
|
|
|
#endif
|
|
#endif
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void Logger::fileMessageHandler(void* pfile, const Info& info)
|
|
|
|
|
|
|
+void Logger::fileMessageHandler(void* pfile, const LoggerMessageInfo& info)
|
|
|
{
|
|
{
|
|
|
File* file = reinterpret_cast<File*>(pfile);
|
|
File* file = reinterpret_cast<File*>(pfile);
|
|
|
|
|
|