7 #include "imstkLoggerG3.h" 9 #include "g3log/crashhandler.hpp" 19 stdSink::GetColor(
const LEVELS level)
const 21 if (level.value == WARNING.value)
23 return FontColor::Yellow;
25 if (level.value == DEBUG.value)
27 return FontColor::Green;
29 if (level.value == FATAL.value)
31 return FontColor::Red;
33 return FontColor::White;
38 #define WIN_CONSOLE_RED 4 39 #define WIN_CONSOLE_LIGHT_GRAY 7 40 #define WIN_CONSOLE_YELLOW 14 43 setColorWin(
const int colCode)
45 WORD wColor = ((0 & 0x0F) << 4) + (colCode & 0x0F);
46 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
52 stdSink::ReceiveLogMessage(g3::LogMessageMover logEntry)
54 const auto level = logEntry.get()._level;
55 const auto message = logEntry.get().message();
58 auto color =
static_cast<int>(GetColor(level));
59 std::cout <<
"\033[" << color <<
"m" 61 <<
"\033[m" << std::endl;
64 if (level.value == WARNING.value)
66 setColorWin(WIN_CONSOLE_YELLOW);
67 std::cerr << message << std::endl;
68 setColorWin(WIN_CONSOLE_LIGHT_GRAY);
70 else if (level.value == FATAL.value)
72 setColorWin(WIN_CONSOLE_RED);
73 std::cerr << message << std::endl;
74 setColorWin(WIN_CONSOLE_LIGHT_GRAY);
78 std::cout << message << std::endl;
88 if (instance.m_g3logWorker ==
nullptr)
113 std::unique_ptr<StdoutSinkHandle>
116 return std::unique_ptr<StdoutSinkHandle>(std::move(m_g3logWorker->addSink(std2::make_unique<stdSink>(), &stdSink::ReceiveLogMessage)));
119 std::unique_ptr<FileSinkHandle>
122 return std::unique_ptr<FileSinkHandle>(m_g3logWorker->addDefaultLogger(name, path,
"imstk"));
128 m_g3logWorker = g3::LogWorker::createLogWorker();
129 g3::initializeLogging(m_g3logWorker.get());
135 m_g3logWorker =
nullptr;
std::unique_ptr< StdoutSinkHandle > addStdoutSink()
Add a sink that logs to standard output.
static LoggerG3 & getInstance()
Gets logger instances without sinks, creates if doesn't exist yet.
void destroy()
Manual destruction of the logger members.
void initialize()
Create and initialize the logger.
std::unique_ptr< FileSinkHandle > addFileSink(const std::string &name, const std::string &path="./")
Add a sink that logs to file.
static LoggerG3 & startLogger()
Starts logger with default sinks, use getInstance to create a logger with no sinks.