diff options
Diffstat (limited to 'src/server/shared/Logging/AppenderConsole.cpp')
-rw-r--r-- | src/server/shared/Logging/AppenderConsole.cpp | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/src/server/shared/Logging/AppenderConsole.cpp b/src/server/shared/Logging/AppenderConsole.cpp deleted file mode 100644 index 531df266aa1..00000000000 --- a/src/server/shared/Logging/AppenderConsole.cpp +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#include <sstream> - -#include "AppenderConsole.h" -#include "Config.h" -#include "Util.h" - -#if PLATFORM == PLATFORM_WINDOWS - #include <Windows.h> -#endif - -AppenderConsole::AppenderConsole(uint8 id, std::string const& name, LogLevel level, AppenderFlags flags, ExtraAppenderArgs extraArgs) - : Appender(id, name, level, flags), _colored(false) -{ - for (uint8 i = 0; i < MaxLogLevels; ++i) - _colors[i] = ColorTypes(MaxColors); - - if (!extraArgs.empty()) - InitColors(extraArgs[0]); -} - -void AppenderConsole::InitColors(std::string const& str) -{ - if (str.empty()) - { - _colored = false; - return; - } - - int color[MaxLogLevels]; - - std::istringstream ss(str); - - for (uint8 i = 0; i < MaxLogLevels; ++i) - { - ss >> color[i]; - - if (!ss) - return; - - if (color[i] < 0 || color[i] >= MaxColors) - return; - } - - for (uint8 i = 0; i < MaxLogLevels; ++i) - _colors[i] = ColorTypes(color[i]); - - _colored = true; -} - -void AppenderConsole::SetColor(bool stdout_stream, ColorTypes color) -{ -#if PLATFORM == PLATFORM_WINDOWS - static WORD WinColorFG[MaxColors] = - { - 0, // BLACK - FOREGROUND_RED, // RED - FOREGROUND_GREEN, // GREEN - FOREGROUND_RED | FOREGROUND_GREEN, // BROWN - FOREGROUND_BLUE, // BLUE - FOREGROUND_RED | FOREGROUND_BLUE, // MAGENTA - FOREGROUND_GREEN | FOREGROUND_BLUE, // CYAN - FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE, // WHITE - // YELLOW - FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY, - // RED_BOLD - FOREGROUND_RED | FOREGROUND_INTENSITY, - // GREEN_BOLD - FOREGROUND_GREEN | FOREGROUND_INTENSITY, - FOREGROUND_BLUE | FOREGROUND_INTENSITY, // BLUE_BOLD - // MAGENTA_BOLD - FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY, - // CYAN_BOLD - FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY, - // WHITE_BOLD - FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY - }; - - HANDLE hConsole = GetStdHandle(stdout_stream ? STD_OUTPUT_HANDLE : STD_ERROR_HANDLE); - SetConsoleTextAttribute(hConsole, WinColorFG[color]); -#else - enum ANSITextAttr - { - TA_NORMAL = 0, - TA_BOLD = 1, - TA_BLINK = 5, - TA_REVERSE = 7 - }; - - enum ANSIFgTextAttr - { - FG_BLACK = 30, - FG_RED, - FG_GREEN, - FG_BROWN, - FG_BLUE, - FG_MAGENTA, - FG_CYAN, - FG_WHITE, - FG_YELLOW - }; - - enum ANSIBgTextAttr - { - BG_BLACK = 40, - BG_RED, - BG_GREEN, - BG_BROWN, - BG_BLUE, - BG_MAGENTA, - BG_CYAN, - BG_WHITE - }; - - static uint8 UnixColorFG[MaxColors] = - { - FG_BLACK, // BLACK - FG_RED, // RED - FG_GREEN, // GREEN - FG_BROWN, // BROWN - FG_BLUE, // BLUE - FG_MAGENTA, // MAGENTA - FG_CYAN, // CYAN - FG_WHITE, // WHITE - FG_YELLOW, // YELLOW - FG_RED, // LRED - FG_GREEN, // LGREEN - FG_BLUE, // LBLUE - FG_MAGENTA, // LMAGENTA - FG_CYAN, // LCYAN - FG_WHITE // LWHITE - }; - - fprintf((stdout_stream? stdout : stderr), "\x1b[%d%sm", UnixColorFG[color], (color >= YELLOW && color < MaxColors ? ";1" : "")); - #endif -} - -void AppenderConsole::ResetColor(bool stdout_stream) -{ - #if PLATFORM == PLATFORM_WINDOWS - HANDLE hConsole = GetStdHandle(stdout_stream ? STD_OUTPUT_HANDLE : STD_ERROR_HANDLE); - SetConsoleTextAttribute(hConsole, FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED); - #else - fprintf((stdout_stream ? stdout : stderr), "\x1b[0m"); - #endif -} - -void AppenderConsole::_write(LogMessage const* message) -{ - bool stdout_stream = !(message->level == LOG_LEVEL_ERROR || message->level == LOG_LEVEL_FATAL); - - if (_colored) - { - uint8 index; - switch (message->level) - { - case LOG_LEVEL_TRACE: - index = 5; - break; - case LOG_LEVEL_DEBUG: - index = 4; - break; - case LOG_LEVEL_INFO: - index = 3; - break; - case LOG_LEVEL_WARN: - index = 2; - break; - case LOG_LEVEL_FATAL: - index = 0; - break; - case LOG_LEVEL_ERROR: // No break on purpose - default: - index = 1; - break; - } - - SetColor(stdout_stream, _colors[index]); - utf8printf(stdout_stream ? stdout : stderr, "%s%s\n", message->prefix.c_str(), message->text.c_str()); - ResetColor(stdout_stream); - } - else - utf8printf(stdout_stream ? stdout : stderr, "%s%s\n", message->prefix.c_str(), message->text.c_str()); -} |