123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #include "StdInc.h"
- #include "CLogger.h"
- /*
- * CLogger.cpp, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- // Console, file definitions
- DLL_LINKAGE CConsoleHandler *console = NULL;
- DLL_LINKAGE std::ostream *logfile = NULL;
- // CLogger definitions
- DLL_LINKAGE CLogger tlog0(0);
- DLL_LINKAGE CLogger tlog1(1);
- DLL_LINKAGE CLogger tlog2(2);
- DLL_LINKAGE CLogger tlog3(3);
- DLL_LINKAGE CLogger tlog4(4);
- DLL_LINKAGE CLogger tlog5(5);
- DLL_LINKAGE CLogger tlog6(-2);
- // Logging level settings
- const int CLogger::CONSOLE_LOGGING_LEVEL = 5;
- const int CLogger::FILE_LOGGING_LEVEL = 6;
- CLogger::CLogger(const int Lvl) : lvl(Lvl)
- {
- #ifdef ANDROID
- androidloglevel = ANDROID_LOG_INFO;
- switch(lvl) {
- case 0: androidloglevel = ANDROID_LOG_INFO; break;
- case 1: androidloglevel = ANDROID_LOG_FATAL; break;
- case 2: androidloglevel = ANDROID_LOG_ERROR; break;
- case 3: androidloglevel = ANDROID_LOG_WARN; break;
- case 4: androidloglevel = ANDROID_LOG_INFO; break;
- case 5: androidloglevel = ANDROID_LOG_DEBUG; break;
- case 6: case -2: androidloglevel = ANDROID_LOG_VERBOSE; break;
- }
- #endif
- }
- #ifdef ANDROID
- void CLogger::outputAndroid()
- {
- int pos = buf.str().find("\n");
- while( pos >= 0 )
- {
- __android_log_print(androidloglevel, "VCMI", "%s", buf.str().substr(0, pos).c_str() );
- buf.str( buf.str().substr(pos+1) );
- pos = buf.str().find("\n");
- }
- }
- #endif
- CLogger& CLogger::operator<<(std::ostream& (*fun)(std::ostream&))
- {
- #ifdef ANDROID
- buf << fun;
- outputAndroid();
- #else
- if(lvl < CLogger::CONSOLE_LOGGING_LEVEL)
- std::cout << fun;
- if((lvl < CLogger::FILE_LOGGING_LEVEL) && logfile)
- *logfile << fun;
- #endif
- return *this;
- }
|