|
|
|
@ -28,6 +28,13 @@
|
|
|
|
|
#ifndef _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 <atomic>
|
|
|
|
|
#include <boost/filesystem.hpp>
|
|
|
|
@ -117,6 +124,31 @@ static const char *get_default_categories(int level)
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
mlog_set_log(monero_log);
|
|
|
|
|
#ifdef WIN32
|
|
|
|
|
EnableVTMode();
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void mlog_set_categories(const char *categories)
|
|
|
|
|