Euphoria
log.h
Go to the documentation of this file.
1 #pragma once
2 
3 // todo(Gustav): move logging to app layer and use sdl as log base, with fmt formatting instead
4 
5 namespace eu::log
6 {
7 #define LOG_INFO(...) eu::log::get_global_logger()->info(fmt::format(__VA_ARGS__))
8 #define LOG_WARN(...) eu::log::get_global_logger()->warn(fmt::format(__VA_ARGS__))
9 #define LOG_ERROR(...) eu::log::get_global_logger()->error(fmt::format(__VA_ARGS__))
10 
11 #define LOG_INFOS(...) eu::log::get_global_logger()->info(__VA_ARGS__)
12 #define LOG_WARNS(...) eu::log::get_global_logger()->warn(__VA_ARGS__)
13 #define LOG_ERRORS(...) eu::log::get_global_logger()->error(__VA_ARGS__)
14 
15  struct Logger
16  {
17  Logger() = default;
18  virtual ~Logger() = default;
19 
20  Logger(const Logger&) = delete;
21  Logger(Logger&&) = delete;
22  void operator=(const Logger&) = delete;
23  void operator=(Logger&&) = delete;
24 
25  virtual void info(const std::string& str) = 0;
26  virtual void warn(const std::string& str) = 0;
27  virtual void error(const std::string& str) = 0;
28  };
29 
30  struct ScopedLogger
31  {
32  explicit ScopedLogger(Logger* new_log);
33  ~ScopedLogger();
34 
35  ScopedLogger(const ScopedLogger&) = delete;
37  void operator=(const ScopedLogger&) = delete;
38  void operator=(ScopedLogger&&) = delete;
39  };
40 
42 }
43 
Definition: log.cc:32
Logger * get_global_logger()
Definition: log.cc:34
virtual void warn(const std::string &str)=0
Logger(Logger &&)=delete
virtual ~Logger()=default
Logger(const Logger &)=delete
Logger()=default
void operator=(const Logger &)=delete
void operator=(Logger &&)=delete
virtual void info(const std::string &str)=0
virtual void error(const std::string &str)=0
ScopedLogger(const ScopedLogger &)=delete
ScopedLogger(ScopedLogger &&)=delete
void operator=(ScopedLogger &&)=delete
ScopedLogger(Logger *new_log)
Definition: log.cc:44
void operator=(const ScopedLogger &)=delete