crash handler, logger and oengles changes

* save log messages to otclient.txt
* fixes in FrameBuffer and HardwareBuffer to work with OpenGLES
* possibility to get compilation information from lua (compiler version, build date, build revision, build type)
* make crash handler more informatave
* handle assert crash signals (SIGABRT)
This commit is contained in:
Eduardo Bart
2012-03-22 09:57:43 -03:00
parent 28633a9e20
commit 3ad97c9eab
14 changed files with 128 additions and 63 deletions

View File

@@ -37,6 +37,11 @@ void Logger::log(Fw::LogLevel level, const std::string& message)
std::string outmsg = logPrefixes[level] + message;
std::cout << outmsg << std::endl;
if(m_outFile.good()) {
m_outFile << outmsg << std::endl;
m_outFile.flush();
}
std::size_t now = std::time(NULL);
m_logMessages.push_back(LogMessage(level, outmsg, now));
@@ -72,3 +77,15 @@ void Logger::fireOldMessages()
m_onLog(logMessage.level, logMessage.message, logMessage.when);
}
}
void Logger::setLogFile(const std::string& file)
{
m_outFile.open(file.c_str(), std::ios::out | std::ios::app);
if(!m_outFile.is_open() || !m_outFile.good()) {
logError("Unable to save log to '", file, "'");
return;
}
m_outFile << "\n== application started at " << Fw::dateTimeString() << std::endl;
m_outFile.flush();
}

View File

@@ -41,11 +41,13 @@ public:
void logFunc(Fw::LogLevel level, const std::string& message, std::string prettyFunction);
void fireOldMessages();
void setLogFile(const std::string& file);
void setOnLog(const OnLogCallback& onLog) { m_onLog = onLog; }
private:
std::list<LogMessage> m_logMessages;
OnLogCallback m_onLog;
std::ofstream m_outFile;
};
extern Logger g_logger;