#ifndef LOG_H #define LOG_H enum LogLevelType { TraceLevel = 0, DebugLevel, InfoLevel, WarnLevel, ErrorLevel, FatalLevel }; #ifdef DEBUG #include class Logger { public: static FILE* logFile; static LogLevelType LogLevel; static void InitLogFile(); static void Trace(std::string msg, ...); static void Debug(std::string msg, ...); static void Info(std::string msg, ...); static void Warn(std::string msg, ...); static void Error(std::string msg, ...); static void Fatal(std::string msg, ...); static void Log(LogLevelType logLevel, std::string msg, ...); private: static void Log(LogLevelType logLevel, std::string msg, va_list arsg); }; #else class Logger { public: static FILE* logFile; static LogLevelType LogLevel; static void Trace(std::string msg, ...) {} static void Debug(std::string msg, ...) {} static void Info(std::string msg, ...) {} static void Warn(std::string msg, ...) {} static void Error(std::string msg, ...) {} static void Fatal(std::string msg, ...) {} static void Log(LogLevelType logLevel, std::string msg, ...) {} }; #endif #endif