MCPcopy Create free account
hub / github.com/cinit/WSAPatch / Log

Class Log

Log.h:27–88  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25#endif
26
27class Log {
28public:
29 enum class Level {
30 UNKNOWN = 0,
31 VERBOSE = 2,
32 DEBUG = 3,
33 INFO = 4,
34 WARN = 5,
35 ERROR = 6
36 };
37 using LogHandler = void (*)(Level level, const WCHAR *tag, const WCHAR *msg);
38private:
39 static volatile LogHandler mHandler;
40public:
41 static void format(Level level, const WCHAR *tag, _Printf_format_string_ const WCHAR *fmt, ...) {
42 va_list varg1;
43 LogHandler h = mHandler;
44 if (h == nullptr || fmt == nullptr) {
45 return;
46 }
47 WCHAR buffer[1024] = {};
48 va_start(varg1, fmt);
49 StringCchVPrintfW(buffer, 1024, fmt, varg1);
50 va_end(varg1);
51 h(level, tag, buffer);
52 }
53
54 static void logBuffer(Level level, const WCHAR *tag, const WCHAR *msg) {
55 LogHandler h = mHandler;
56 if (h == nullptr) {
57 return;
58 }
59 h(level, tag, msg);
60 }
61
62 static inline LogHandler getLogHandler() noexcept {
63 return mHandler;
64 }
65
66 static inline void setLogHandler(LogHandler h) noexcept {
67 mHandler = h;
68 }
69
70 static constexpr const WCHAR *levelName(Level level) noexcept {
71 switch (level) {
72 case Level::UNKNOWN:
73 return L"UNKNOWN";
74 case Level::VERBOSE:
75 return L"VERBOSE";
76 case Level::DEBUG:
77 return L"DEBUG";
78 case Level::INFO:
79 return L"INFO";
80 case Level::WARN:
81 return L"WARN";
82 case Level::ERROR:
83 return L"ERROR";
84 default:

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected