File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change 1+ #ifndef _NBL_SYSTEM_C_COLORED_STDOUT_LOGGER_ANSI_INCLUDED_
2+ #define _NBL_SYSTEM_C_COLORED_STDOUT_LOGGER_ANSI_INCLUDED_
3+
4+ #include " nbl/system/IThreadsafeLogger.h"
5+
6+ #include < string_view>
7+
8+ namespace nbl ::system
9+ {
10+
11+ // logging using ANSI escape codes
12+ class NBL_API2 CColoredStdoutLoggerANSI : public IThreadsafeLogger
13+ {
14+ public:
15+ CColoredStdoutLoggerANSI (core::bitflag<E_LOG_LEVEL> logLevelMask = ILogger::defaultLogMask()) : IThreadsafeLogger(logLevelMask) {}
16+
17+ private:
18+ // more info about how this works: https://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797
19+ virtual void threadsafeLog_impl (const std::string_view &fmt, E_LOG_LEVEL logLevel, va_list args) override
20+ {
21+ auto str = constructLogString (fmt, logLevel, args);
22+ switch (logLevel)
23+ {
24+ case ELL_DEBUG:
25+ printf (" \x1b [37m%s" , str.data ()); // White
26+ break ;
27+ case ELL_INFO:
28+ printf (" \x1b [37m%s" , str.data ()); // White
29+ break ;
30+ case ELL_WARNING:
31+ printf (" \x1b [33m%s" , str.data ()); // yellow
32+ break ;
33+ case ELL_ERROR:
34+ printf (" \x1b [31m%s" , str.data ()); // red
35+ break ;
36+ case ELL_PERFORMANCE:
37+ printf (" \x1b [34m%s" , str.data ()); // blue
38+ break ;
39+ case ELL_NONE:
40+ assert (false );
41+ break ;
42+ }
43+ fflush (stdout);
44+ }
45+ };
46+
47+ } // namespace nbl::system
48+
49+ #endif
You can’t perform that action at this time.
0 commit comments