#pragma once #include #include #include #include #include namespace effil { class Logger { public: Logger() : lockGuard_(lock_) {} ~Logger() { *stream_ << std::endl; } std::ostream& getStream() { return *stream_; } private: static std::mutex lock_; static std::unique_ptr stream_; std::lock_guard lockGuard_; }; std::string getCurrentTime(); #ifdef NDEBUG # define DEBUG(x) if (false) std::cout #else # define DEBUG(name) Logger().getStream() << getCurrentTime() \ << " " << "[" << std::this_thread::get_id() \ << "][" << name << "] " #endif } // effil