You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.1KB

  1. #pragma once
  2. #include "common.hpp"
  3. /** Example usage:
  4. debug("error: %d", errno);
  5. will print something like
  6. [0.123 debug myfile.cpp:45] error: 67
  7. */
  8. #define DEBUG(format, ...) rack::logger::log(rack::logger::DEBUG_LEVEL, __FILE__, __LINE__, format, ##__VA_ARGS__)
  9. #define INFO(format, ...) rack::logger::log(rack::logger::INFO_LEVEL, __FILE__, __LINE__, format, ##__VA_ARGS__)
  10. #define WARN(format, ...) rack::logger::log(rack::logger::WARN_LEVEL, __FILE__, __LINE__, format, ##__VA_ARGS__)
  11. #define FATAL(format, ...) rack::logger::log(rack::logger::FATAL_LEVEL, __FILE__, __LINE__, format, ##__VA_ARGS__)
  12. /** Deprecated lowercase log functions */
  13. #define debug(...) DEBUG(__VA_ARGS__)
  14. #define info(...) INFO(__VA_ARGS__)
  15. #define warn(...) WARN(__VA_ARGS__)
  16. #define fatal(...) FATAL(__VA_ARGS__)
  17. namespace rack {
  18. namespace logger {
  19. enum Level {
  20. DEBUG_LEVEL,
  21. INFO_LEVEL,
  22. WARN_LEVEL,
  23. FATAL_LEVEL
  24. };
  25. void init(bool devMode);
  26. void destroy();
  27. /** Do not use this function directly. Use the macros below. */
  28. void log(Level level, const char *filename, int line, const char *format, ...);
  29. } // namespace logger
  30. } // namespace rack