DVSenseDriver  1.0.1
The SDK for dvsense products.
logger.hpp
1 #ifndef __DVSENSE_LOGGER_HPP__
2 #define __DVSENSE_LOGGER_HPP__
3 
4 #include <sstream>
5 #include <memory>
6 #include <cstdarg>
7 
8 #ifdef _WIN32
9 
10 #ifdef DVSENSE_BASE_EXPORTS
11 #define DVSENSE_BASE_API __declspec(dllexport)
12 #else
13 #define DVSENSE_BASE_API __declspec(dllimport)
14 #endif
15 #else
16 #define DVSENSE_BASE_API
17 #endif // _WIN32
18 
19 // Macro definitions for ease of use
20 #define LOGGER dvsense::Logger::Instance()
21 #define LOG_TRACE(...) dvsense::Logger::Instance().log_(dvsense::LogLevelType::TRACE, __FILE__, __LINE__, __VA_ARGS__)
22 #define LOG_DEBUG(...) dvsense::Logger::Instance().log_(dvsense::LogLevelType::DEBUG, __FILE__, __LINE__, __VA_ARGS__)
23 #define LOG_INFO(...) dvsense::Logger::Instance().log_(dvsense::LogLevelType::INFO, __FILE__, __LINE__, __VA_ARGS__)
24 #define LOG_WARN(...) dvsense::Logger::Instance().log_(dvsense::LogLevelType::WARN, __FILE__, __LINE__, __VA_ARGS__)
25 #define LOG_ERROR(...) dvsense::Logger::Instance().log_(dvsense::LogLevelType::ERR, __FILE__, __LINE__, __VA_ARGS__)
26 #define LOG_FATAL(...) dvsense::Logger::Instance().log_(dvsense::LogLevelType::FATAL, __FILE__, __LINE__, __VA_ARGS__)
27 
28 namespace dvsense
29 {
30 
31  enum class DVSENSE_BASE_API LogLevelType
32  {
33  TRACE = 0,
34  DEBUG = 1,
35  INFO = 2,
36  WARN = 3,
37  ERR = 4,
38  FATAL = 5
39  };
40 
41  class DVSENSE_BASE_API Logger
42  {
43  public:
44  Logger(const Logger &) = delete;
45  Logger &operator=(const Logger &) = delete;
47  void setLogLevel(LogLevelType level);
48  LogLevelType getLogLevel() { return level_; }
49 
50  // Static method to get the singleton instance
51  static Logger &Instance()
52  {
53  static Logger instance;
54  return instance;
55  }
56 
57  void log_(LogLevelType level, const char *file, int line, const char *fmt, ...);
58 
59  private:
60  class Impl;
61  std::unique_ptr<Impl> impl_;
62  LogLevelType level_;
63  Logger();
64  // std::string getFileName(const std::string& filePath);
65  };
66 
67 } // namespace dvsense
68 
69 #endif // __DVSENSE_LOGGER_HPP__
Definition: logger.hpp:42
Logger & operator=(const Logger &)=delete
void setLogLevel(LogLevelType level)
LogLevelType getLogLevel()
Definition: logger.hpp:48
void log_(LogLevelType level, const char *file, int line, const char *fmt,...)
Logger(const Logger &)=delete
static Logger & Instance()
Definition: logger.hpp:51
Definition: TypeUtils.hpp:7