[DEV] update log interface

This commit is contained in:
Edouard DUPIN 2014-01-05 23:03:11 +01:00
parent b5883ad936
commit 8d7bd46da4
4 changed files with 56 additions and 24 deletions

View File

@ -59,13 +59,13 @@ etk::CStart etk::cstart;
# include <android/log.h> # include <android/log.h>
#endif #endif
etk::CCout& etk::operator <<(etk::CCout &_os, const enum etk::logLevel _obj) etk::CCout& etk::operator <<(etk::CCout &_os, const enum etk::logLevel _obj) {
{ switch (_obj) {
switch (_obj)
{
case logLevelCritical: case logLevelCritical:
#if !defined(__TARGET_OS__Windows) #if !defined(__TARGET_OS__Windows)
_os << ETK_BASH_COLOR_BOLD_RED; if (_os.m_enableColor == true) {
_os << ETK_BASH_COLOR_BOLD_RED;
}
#endif #endif
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
_os.m_levelAndroid = ANDROID_LOG_FATAL; _os.m_levelAndroid = ANDROID_LOG_FATAL;
@ -75,7 +75,9 @@ etk::CCout& etk::operator <<(etk::CCout &_os, const enum etk::logLevel _obj)
break; break;
case logLevelError: case logLevelError:
#if !defined(__TARGET_OS__Windows) #if !defined(__TARGET_OS__Windows)
_os << ETK_BASH_COLOR_RED; if (_os.m_enableColor == true) {
_os << ETK_BASH_COLOR_RED;
}
#endif #endif
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
_os.m_levelAndroid = ANDROID_LOG_ERROR; _os.m_levelAndroid = ANDROID_LOG_ERROR;
@ -85,7 +87,9 @@ etk::CCout& etk::operator <<(etk::CCout &_os, const enum etk::logLevel _obj)
break; break;
case logLevelWarning: case logLevelWarning:
#if !defined(__TARGET_OS__Windows) #if !defined(__TARGET_OS__Windows)
_os << ETK_BASH_COLOR_MAGENTA; if (_os.m_enableColor == true) {
_os << ETK_BASH_COLOR_MAGENTA;
}
#endif #endif
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
_os.m_levelAndroid = ANDROID_LOG_WARN; _os.m_levelAndroid = ANDROID_LOG_WARN;
@ -95,7 +99,9 @@ etk::CCout& etk::operator <<(etk::CCout &_os, const enum etk::logLevel _obj)
break; break;
case logLevelInfo: case logLevelInfo:
#if !defined(__TARGET_OS__Windows) #if !defined(__TARGET_OS__Windows)
_os << ETK_BASH_COLOR_CYAN; if (_os.m_enableColor == true) {
_os << ETK_BASH_COLOR_CYAN;
}
#endif #endif
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
_os.m_levelAndroid = ANDROID_LOG_INFO; _os.m_levelAndroid = ANDROID_LOG_INFO;
@ -105,7 +111,9 @@ etk::CCout& etk::operator <<(etk::CCout &_os, const enum etk::logLevel _obj)
break; break;
case logLevelDebug: case logLevelDebug:
#if !defined(__TARGET_OS__Windows) #if !defined(__TARGET_OS__Windows)
_os << ETK_BASH_COLOR_YELLOW; if (_os.m_enableColor == true) {
_os << ETK_BASH_COLOR_YELLOW;
}
#endif #endif
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
_os.m_levelAndroid = ANDROID_LOG_DEBUG; _os.m_levelAndroid = ANDROID_LOG_DEBUG;
@ -115,7 +123,9 @@ etk::CCout& etk::operator <<(etk::CCout &_os, const enum etk::logLevel _obj)
break; break;
case logLevelVerbose: case logLevelVerbose:
#if !defined(__TARGET_OS__Windows) #if !defined(__TARGET_OS__Windows)
_os << ETK_BASH_COLOR_WHITE; if (_os.m_enableColor == true) {
_os << ETK_BASH_COLOR_WHITE;
}
#endif #endif
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
_os.m_levelAndroid = ANDROID_LOG_VERBOSE; _os.m_levelAndroid = ANDROID_LOG_VERBOSE;
@ -133,9 +143,21 @@ etk::CCout& etk::operator <<(etk::CCout &_os, const enum etk::logLevel _obj)
} }
void etk::CCout::setColor(bool _enable) {
m_enableColor = _enable;
}
etk::CCout::CCout() void etk::CCout::setOutputFile(bool _enable) {
{ if (m_outputFile != NULL) {
fclose(m_outputFile);
m_outputFile = NULL;
}
m_outputFile = fopen("~/dev/perso/out/MacOs/debug/staging/clang/output.log", "w");
}
etk::CCout::CCout() :
m_enableColor(true),
m_outputFile(NULL) {
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
m_levelAndroid = 0; m_levelAndroid = 0;
#endif #endif
@ -287,7 +309,9 @@ etk::CCout& etk::CCout::operator << (CStart _ccc)
etk::CCout& etk::CCout::operator << (etk::CEndl _t) etk::CCout& etk::CCout::operator << (etk::CEndl _t)
{ {
#if !defined(__TARGET_OS__Windows) #if !defined(__TARGET_OS__Windows)
strncat(m_tmpChar, ETK_BASH_COLOR_NORMAL, MAX_LOG_SIZE); if (m_enableColor == true) {
strncat(m_tmpChar, ETK_BASH_COLOR_NORMAL, MAX_LOG_SIZE);
}
#endif #endif
strncat(m_tmpChar, "\n", MAX_LOG_SIZE); strncat(m_tmpChar, "\n", MAX_LOG_SIZE);
m_tmpChar[MAX_LOG_SIZE] = '\0'; m_tmpChar[MAX_LOG_SIZE] = '\0';
@ -296,6 +320,9 @@ etk::CCout& etk::CCout::operator << (etk::CEndl _t)
#else #else
printf("%s", m_tmpChar); printf("%s", m_tmpChar);
#endif #endif
if (m_outputFile != NULL) {
fprintf(m_outputFile, "%s", m_tmpChar);
}
memset(m_tmpChar, 0, (MAX_LOG_SIZE+1)*sizeof(char)); memset(m_tmpChar, 0, (MAX_LOG_SIZE+1)*sizeof(char));
m_mutex.unLock(); m_mutex.unLock();
return *this; return *this;

View File

@ -23,7 +23,10 @@ namespace etk {
* @brief Generic log output system. it change automaticly from generic console to Android console. * @brief Generic log output system. it change automaticly from generic console to Android console.
*/ */
class CCout { class CCout {
public:
bool m_enableColor;
private: private:
FILE* m_outputFile;
char m_tmpChar[MAX_LOG_SIZE+1]; char m_tmpChar[MAX_LOG_SIZE+1];
char tmp[MAX_LOG_SIZE_TMP]; char tmp[MAX_LOG_SIZE_TMP];
etk::Mutex m_mutex; etk::Mutex m_mutex;
@ -54,6 +57,8 @@ namespace etk {
CCout& operator << (bool _t); CCout& operator << (bool _t);
CCout& operator << (CStart _ccc); CCout& operator << (CStart _ccc);
CCout& operator << (etk::CEndl _t); CCout& operator << (etk::CEndl _t);
void setColor(bool _enable);
void setOutputFile(bool _enable);
}; };
extern etk::CCout cout; extern etk::CCout cout;
extern etk::CEndl endl; extern etk::CEndl endl;

View File

@ -417,7 +417,7 @@ std::string std::to_string(bool _val) {
} }
return "false"; return "false";
} }
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
std::string std::to_string(int _val) { std::string std::to_string(int _val) {
char tmpVal[256]; char tmpVal[256];
sprintf(tmpVal, "%d", _val); sprintf(tmpVal, "%d", _val);
@ -796,7 +796,7 @@ std::vector<std::u32string> std::split(const std::u32string& _input, char32_t _v
return list; return list;
} }
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
double std::stod(const std::string& _str, size_t* _idx) { double std::stod(const std::string& _str, size_t* _idx) {
double ret = 0; double ret = 0;
sscanf(_str.c_str(), "%Lf", &ret); sscanf(_str.c_str(), "%Lf", &ret);

View File

@ -65,7 +65,7 @@ namespace std {
std::string to_string(const std::u32string& _obj); std::string to_string(const std::u32string& _obj);
//! @previous //! @previous
std::string to_string(bool _val); std::string to_string(bool _val);
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
//! @previous //! @previous
std::string to_string(int _val); std::string to_string(int _val);
//! @previous //! @previous
@ -121,49 +121,49 @@ namespace std {
} }
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
double stod(const std::string& _str, size_t* _idx = 0); double stod(const std::string& _str, size_t* _idx = 0);
#endif #endif
//! @previous //! @previous
double stod(const std::u32string& _str, size_t* _idx = 0); double stod(const std::u32string& _str, size_t* _idx = 0);
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
float stof(const std::string& _str, size_t* _idx = 0); float stof(const std::string& _str, size_t* _idx = 0);
#endif #endif
//! @previous //! @previous
float stof(const std::u32string& _str, size_t* _idx = 0); float stof(const std::u32string& _str, size_t* _idx = 0);
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
int stoi(const std::string& _str, size_t* _idx = 0, int _base = 10); int stoi(const std::string& _str, size_t* _idx = 0, int _base = 10);
#endif #endif
//! @previous //! @previous
int stoi(const std::u32string& _str, size_t* _idx = 0, int _base = 10); int stoi(const std::u32string& _str, size_t* _idx = 0, int _base = 10);
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
long stol(const std::string& _str, size_t* _idx = 0, int _base = 10); long stol(const std::string& _str, size_t* _idx = 0, int _base = 10);
#endif #endif
//! @previous //! @previous
long stol(const std::u32string& _str, size_t* _idx = 0, int _base = 10); long stol(const std::u32string& _str, size_t* _idx = 0, int _base = 10);
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
long double stold(const std::string& _str, size_t* _idx = 0); long double stold(const std::string& _str, size_t* _idx = 0);
#endif #endif
//! @previous //! @previous
long double stold(const std::u32string& _str, size_t* _idx = 0); long double stold(const std::u32string& _str, size_t* _idx = 0);
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
long long stoll(const std::string& _str, size_t* _idx = 0, int _base = 10); long long stoll(const std::string& _str, size_t* _idx = 0, int _base = 10);
#endif #endif
//! @previous //! @previous
long long stoll(const std::u32string& _str, size_t* _idx = 0, int _base = 10); long long stoll(const std::u32string& _str, size_t* _idx = 0, int _base = 10);
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
unsigned long stoul(const std::string& _str, size_t* _idx = 0, int _base = 10); unsigned long stoul(const std::string& _str, size_t* _idx = 0, int _base = 10);
#endif #endif
//! @previous //! @previous
unsigned long stoul(const std::u32string& _str, size_t* _idx = 0, int _base = 10); unsigned long stoul(const std::u32string& _str, size_t* _idx = 0, int _base = 10);
#if (defined(__TARGET_OS__Android) || defined(__TARGET_OS__MacOs)) #if (defined(__TARGET_OS__Android))
unsigned long long stoull(const std::string& _str, size_t* _idx = 0, int _base = 10); unsigned long long stoull(const std::string& _str, size_t* _idx = 0, int _base = 10);
#endif #endif
//! @previous //! @previous