Add initial project structure with CMake configuration, source files, and README documentation for Unitree GO2 Custom Controller
This commit is contained in:
53
include/logger.hpp
Normal file
53
include/logger.hpp
Normal file
@@ -0,0 +1,53 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <memory>
|
||||
#include <mutex>
|
||||
#include <sstream>
|
||||
#include <chrono>
|
||||
#include <iomanip>
|
||||
|
||||
namespace custom {
|
||||
|
||||
enum class LogLevel {
|
||||
DEBUG = 0,
|
||||
INFO = 1,
|
||||
WARN = 2,
|
||||
ERROR = 3
|
||||
};
|
||||
|
||||
class Logger {
|
||||
public:
|
||||
static Logger& getInstance();
|
||||
|
||||
void setLevel(LogLevel level);
|
||||
void setLogFile(const std::string& filename);
|
||||
|
||||
void log(LogLevel level, const std::string& message);
|
||||
void debug(const std::string& message);
|
||||
void info(const std::string& message);
|
||||
void warn(const std::string& message);
|
||||
void error(const std::string& message);
|
||||
|
||||
private:
|
||||
Logger() = default;
|
||||
~Logger() = default;
|
||||
Logger(const Logger&) = delete;
|
||||
Logger& operator=(const Logger&) = delete;
|
||||
|
||||
std::string getCurrentTime();
|
||||
std::string levelToString(LogLevel level);
|
||||
|
||||
LogLevel currentLevel_ = LogLevel::INFO;
|
||||
std::unique_ptr<std::ofstream> logFile_;
|
||||
std::mutex logMutex_;
|
||||
};
|
||||
|
||||
// Convenience macros
|
||||
#define LOG_DEBUG(msg) Logger::getInstance().debug(msg)
|
||||
#define LOG_INFO(msg) Logger::getInstance().info(msg)
|
||||
#define LOG_WARN(msg) Logger::getInstance().warn(msg)
|
||||
#define LOG_ERROR(msg) Logger::getInstance().error(msg)
|
||||
|
||||
} // namespace custom
|
||||
Reference in New Issue
Block a user