Refine logger for colors

master
Chunting Gu 6 years ago
parent 0ad277322f
commit 37e71c6aca

@ -13,7 +13,7 @@
#include <thread> #include <thread>
#if (defined(WIN32) || defined(_WIN64)) #if (defined(WIN32) || defined(_WIN64))
// Do nothing. #include <Windows.h>
#else #else
// For getting thread ID. // For getting thread ID.
#include <sys/syscall.h> #include <sys/syscall.h>
@ -79,12 +79,13 @@ static const bool g_terminal_has_color = []() {
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING #ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
#endif #endif
HANDLE houtput = GetStdHandle(STD_OUTPUT_HANDLE); // NOTE: Need Windows 10.
if (houtput != INVALID_HANDLE_VALUE) { HANDLE h_output = GetStdHandle(STD_OUTPUT_HANDLE);
if (h_output != INVALID_HANDLE_VALUE) {
DWORD mode = 0; DWORD mode = 0;
GetConsoleMode(houtput, &mode); GetConsoleMode(h_output, &mode);
mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
return SetConsoleMode(houtput, mode) != 0; return SetConsoleMode(h_output, mode) != 0;
} }
return false; return false;
#else #else
@ -104,7 +105,7 @@ static const bool g_terminal_has_color = []() {
// Colors // Colors
#ifdef _WIN32 #if (defined(WIN32) || defined(_WIN64))
#define VTSEQ(ID) ("\x1b[1;" #ID "m") #define VTSEQ(ID) ("\x1b[1;" #ID "m")
#else #else
#define VTSEQ(ID) ("\x1b[" #ID "m") #define VTSEQ(ID) ("\x1b[" #ID "m")
@ -157,6 +158,8 @@ const char* TerminalReset() {
return g_terminal_has_color ? VTSEQ(0) : ""; return g_terminal_has_color ? VTSEQ(0) : "";
} }
// -----------------------------------------------------------------------------
namespace bfs = boost::filesystem; namespace bfs = boost::filesystem;
// std::this_thread::get_id() returns a very long ID (same as pthread_self()) // std::this_thread::get_id() returns a very long ID (same as pthread_self())
@ -265,11 +268,10 @@ void LogWrite(int level, const char* file, int line, const char* format, ...) {
if (g_colorlogtostderr && g_terminal_has_color) { if (g_colorlogtostderr && g_terminal_has_color) {
if (level < WEBCC_WARN) { if (level < WEBCC_WARN) {
fprintf(stderr, "%s%s%s, %s, %7s, %25s, %4d, %s", fprintf(stderr, "%s%s, %s, %7s, %25s, %4d, ",
TerminalReset(), TerminalDim(), TerminalReset(),
timestamp.c_str(), kLevelNames[level], thread_id.c_str(), timestamp.c_str(), kLevelNames[level], thread_id.c_str(),
file, line, file, line);
level == WEBCC_INFO ? TerminalReset() : ""); // un-dim for INFO
} else { } else {
fprintf(stderr, "%s%s%s, %s, %7s, %25s, %4d, ", fprintf(stderr, "%s%s%s, %s, %7s, %25s, %4d, ",
TerminalReset(), TerminalReset(),

@ -1,8 +1,6 @@
#ifndef WEBCC_LOGGER_H_ #ifndef WEBCC_LOGGER_H_
#define WEBCC_LOGGER_H_ #define WEBCC_LOGGER_H_
// Simple console logger.
// This file was generated from "config.h.in" by CMake. // This file was generated from "config.h.in" by CMake.
#include "webcc/config.h" #include "webcc/config.h"

Loading…
Cancel
Save