ANSI colors in Windows 10

This commit is contained in:
iDunk5400 2017-11-09 21:11:20 +01:00
parent e19652df51
commit 2e2daebcc9
No known key found for this signature in database
GPG Key ID: 0F1715596D812FD8
1 changed files with 35 additions and 0 deletions

View File

@ -28,6 +28,13 @@
#ifndef _MLOG_H_ #ifndef _MLOG_H_
#define _MLOG_H_ #define _MLOG_H_
#ifdef _WIN32
#include <windows.h>
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
#endif
#endif
#include <time.h> #include <time.h>
#include <atomic> #include <atomic>
#include <boost/filesystem.hpp> #include <boost/filesystem.hpp>
@ -117,6 +124,31 @@ static const char *get_default_categories(int level)
return categories; return categories;
} }
#ifdef WIN32
bool EnableVTMode()
{
// Set output mode to handle virtual terminal sequences
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (hOut == INVALID_HANDLE_VALUE)
{
return false;
}
DWORD dwMode = 0;
if (!GetConsoleMode(hOut, &dwMode))
{
return false;
}
dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
if (!SetConsoleMode(hOut, dwMode))
{
return false;
}
return true;
}
#endif
void mlog_configure(const std::string &filename_base, bool console, const std::size_t max_log_file_size, const std::size_t max_log_files) void mlog_configure(const std::string &filename_base, bool console, const std::size_t max_log_file_size, const std::size_t max_log_files)
{ {
el::Configurations c; el::Configurations c;
@ -202,6 +234,9 @@ void mlog_configure(const std::string &filename_base, bool console, const std::s
monero_log = get_default_categories(0); monero_log = get_default_categories(0);
} }
mlog_set_log(monero_log); mlog_set_log(monero_log);
#ifdef WIN32
EnableVTMode();
#endif
} }
void mlog_set_categories(const char *categories) void mlog_set_categories(const char *categories)