/* * Loggable.cxx * * Created on: Dec 4, 2012 * Author: dklein */ #include "Logger.h" #include #include #include #include namespace Highway { Logger* Logger::instance = NULL; Logger* Logger::GetInstance() { if (instance == NULL) { instance = new Logger(); } return instance; } Logger* Logger::InitInstance(std::string bindAddress) { instance = new Logger(bindAddress); return instance; } Logger::Logger() : fBindAddress("") { } Logger::Logger(std::string bindAddress) : fBindAddress(bindAddress) { } Logger::~Logger() { } void Logger::Log(int type, std::string logmsg) { std::chrono::high_resolution_clock::time_point p = std::chrono::high_resolution_clock::now(); std::chrono::milliseconds ms = std::chrono::duration_cast(p.time_since_epoch()); std::chrono::seconds s = std::chrono::duration_cast(ms); std::time_t t = s.count(); std::size_t fractional_seconds = ms.count() % 1000; char mbstr[100]; std::strftime(mbstr, 100, "%H:%M:%S:", std::localtime(&t)); std::string type_str; switch (type) { case DEBUG: type_str = "\033[01;34mDEBUG\033[0m"; break; case INFO: type_str = "\033[01;32mINFO\033[0m"; break; case ERROR: type_str = "\033[01;31mERROR\033[0m"; break; default: break; } std::cout << "[\033[01;36m" << mbstr << fractional_seconds << "\033[0m]" << "[" << type_str << "]" << " " << logmsg << std::endl; } } /* namespace Highway */