11 #define RED "\033[31m"
12 #define GREEN "\033[32m"
13 #define YELLOW "\033[33m"
14 #define DEFAULT "\033[0m"
18 inline size_t _readableThreadId() {
19 static atomic<size_t> thread_idx{0};
20 thread_local
size_t id = thread_idx;
25 inline void _print_logs(
const string message,
const char* level) {
27 auto time = std::time(
nullptr);
29 msg <<
"[" << put_time(localtime(&time),
"%T") <<
"][" << level <<
"] " << _readableThreadId() <<
": " << message;
34 inline void LOG(
const string message) {
35 _print_logs(message, GREEN
"LOG" DEFAULT);
38 inline void ERROR(
const string message) {
39 _print_logs(message, RED
"ERROR" DEFAULT);
42 inline void WARNING(
const string message) {
43 _print_logs(message, YELLOW
"WARNING" DEFAULT);