Changeset 2604
- Timestamp:
- 01/30/06 00:56:46 (3 years ago)
- Files:
-
- hydranode/hnbase/log.cpp (modified) (1 diff)
- hydranode/hnbase/log.h (modified) (1 diff)
- hydranode/hnbase/osdep.h (modified) (2 diffs)
- hydranode/hnbase/schedbase.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
hydranode/hnbase/log.cpp
r2465 r2604 105 105 } 106 106 107 void Log::writeMsg(const std::string &msg) { 108 #ifdef WIN32 // custom code for win32 console colors handling 109 std::string tmp; 110 DWORD cWritten; 111 WORD wOldColors; 112 CONSOLE_SCREEN_BUFFER_INFO csbiInfo; 113 GetConsoleScreenBufferInfo(GetStdHandle(STD_ERROR_HANDLE), &csbiInfo); 114 wOldColors = csbiInfo.wAttributes; 115 for (size_t i = 0; i < msg.size(); ++i) { 116 if (msg[i] == '\33' && msg[i+1] == '[' && msg.size() >= i+5) { 117 DWORD color = 0; 118 if (msg[i+2] == '1') { 119 color |= FOREGROUND_INTENSITY; 120 } 121 if (msg[i+5] == '1') { 122 color |= FOREGROUND_RED; 123 } else if (msg[i+5] == '2') { 124 color |= FOREGROUND_GREEN; 125 } else if (msg[i+5] == '3') { 126 color |= FOREGROUND_RED; 127 color |= FOREGROUND_GREEN; 128 } else if (msg[i+5] == '4') { 129 color |= FOREGROUND_BLUE; 130 } else if (msg[i+5] == '5') { 131 color |= FOREGROUND_BLUE; 132 color |= FOREGROUND_RED; 133 } else if (msg[i+5] == '6') { 134 color |= FOREGROUND_GREEN; 135 color |= FOREGROUND_BLUE; 136 } else { 137 color = wOldColors; 138 } 139 WriteConsole( 140 GetStdHandle(STD_ERROR_HANDLE), 141 tmp.c_str(), tmp.size(), &cWritten, NULL 142 ); 143 tmp.clear(); 144 SetConsoleTextAttribute( 145 GetStdHandle(STD_ERROR_HANDLE), color 146 ); 147 if (msg[i+5] == 'm') { 148 i += 5; 149 } else if (msg[i+6] == 'm') { 150 i += 6; 151 } 152 } else { 153 tmp.push_back(msg[i]); 154 } 155 } 156 if (tmp.size()) { 157 WriteConsole( 158 GetStdHandle(STD_ERROR_HANDLE), 159 tmp.c_str(), tmp.size(), &cWritten, NULL 160 ); 161 tmp.clear(); 162 } 163 #else 164 std::cerr << msg; 165 #endif 166 } 167 107 168 void Log::doLogString(MessageType t, const std::string &msg) { 108 169 if (m_output) { 109 170 // clear any existing garbage 110 std::cerr << '\r' << m_preStr << msg; 171 std::cerr << '\r' << m_preStr; 172 writeMsg(msg); 111 173 int amount = 77 - (m_preStr.size() + msg.size()); 112 174 if (amount > 0) { hydranode/hnbase/log.h
r2496 r2604 233 233 return std::string(""); 234 234 } 235 236 /** 237 * Platform-independent console output method. 238 * 239 * @param msg Message to be written 240 * 241 * On POSIX systems, this method merely writes the specified message 242 * to std::cerr. However, custom code is required on windows to set 243 * console colors, so this method transforms the POSIX color escape 244 * sequences into win32 API calls. 245 * 246 * As a rule, when performing custom console output (Log functions use 247 * this method internally already), use this method instead of direct 248 * console IO. 249 */ 250 static void writeMsg(const std::string &msg); 235 251 236 252 /** hydranode/hnbase/osdep.h
r2516 r2604 216 216 #endif 217 217 218 //! Enable ansi colors for all non-windows platforms219 #ifndef WIN32220 #define __ANSI_COLORS__221 #endif222 223 218 /** 224 219 * Ansi color codes. These can be used to colourize text output to terminal … … 226 221 * be done on runtime (perhaps using a commandline argument?). 227 222 */ 228 #if defined(__ANSI_COLORS__) 229 #define COL_NONE "\33[0;0m" 230 #define COL_BLACK "\33[0;30m" 231 #define COL_RED "\33[0;31m" 232 #define COL_BRED "\33[1;31m" 233 #define COL_GREEN "\33[0;32m" 234 #define COL_BGREEN "\33[1;32m" 235 #define COL_YELLOW "\33[0;33m" 236 #define COL_BYELLOW "\33[1;33m" 237 #define COL_BLUE "\33[0;34m" 238 #define COL_BBLUE "\33[1;34m" 239 #define COL_MAGENTA "\33[0;35m" 240 #define COL_BMAGENTA "\33[1;35m" 241 #define COL_CYAN "\33[0;36m" 242 #define COL_BCYAN "\33[1;36m" 243 #define COL_WHITE "\33[0;37m" 244 #define COL_BWHITE "\33[1;37m" 245 #else 246 #define COL_NONE 247 #define COL_BLACK 248 #define COL_RED 249 #define COL_BRED 250 #define COL_GREEN 251 #define COL_BGREEN 252 #define COL_YELLOW 253 #define COL_BYELLOW 254 #define COL_BLUE 255 #define COL_BBLUE 256 #define COL_MAGENTA 257 #define COL_BMAGENTA 258 #define COL_CYAN 259 #define COL_BCYAN 260 #define COL_WHITE 261 #define COL_BWHITE 262 #endif 223 #define COL_NONE "\33[0;0m" 224 #define COL_BLACK "\33[0;30m" 225 #define COL_RED "\33[0;31m" 226 #define COL_BRED "\33[1;31m" 227 #define COL_GREEN "\33[0;32m" 228 #define COL_BGREEN "\33[1;32m" 229 #define COL_YELLOW "\33[0;33m" 230 #define COL_BYELLOW "\33[1;33m" 231 #define COL_BLUE "\33[0;34m" 232 #define COL_BBLUE "\33[1;34m" 233 #define COL_MAGENTA "\33[0;35m" 234 #define COL_BMAGENTA "\33[1;35m" 235 #define COL_CYAN "\33[0;36m" 236 #define COL_BCYAN "\33[1;36m" 237 #define COL_WHITE "\33[0;37m" 238 #define COL_BWHITE "\33[1;37m" 263 239 264 240 //! Compile code only when compiling with GNU GCC hydranode/hnbase/schedbase.cpp
r2496 r2604 148 148 logMsg( 149 149 boost::format( 150 "Networking scheduler started : UpSpeedLimit:"151 "%s/s DownSpeedLimit: %s/s"150 "Networking scheduler started (upload " 151 "%s/s, download %s/s)." 152 152 ) % Utils::bytesToString(m_upLimit) 153 153 % Utils::bytesToString(m_downLimit) … … 382 382 fmt3 % m_displayUpSpeed % m_displayDownSpeed % m_connCnt; 383 383 boost::recursive_mutex::scoped_lock l(Log::getIosLock()); 384 std::cout << '\r' << fmt3.str(); 385 std::cout.flush(); 384 std::cerr << '\r'; 385 Log::writeMsg(fmt3.str()); 386 std::cerr.flush(); 386 387 nextUpdate = m_curTick + 100; 387 388 }
