6 #ifndef TAPKEE_LOGGING_H_
7 #define TAPKEE_LOGGING_H_
12 #define LEVEL_ENABLED_FIELD(X) bool X##_enabled
13 #define LEVEL_ENABLED_FIELD_INITIALIZER(X,value) X##_enabled(value)
14 #define LEVEL_HANDLERS(LEVEL) \
15 void enable_##LEVEL() { LEVEL##_enabled = true; }; \
16 void disable_##LEVEL() { LEVEL##_enabled = false; }; \
17 bool is_##LEVEL##_enabled() { return LEVEL##_enabled; };\
18 void message_##LEVEL(const std::string& msg) \
20 if (LEVEL##_enabled) \
21 impl->message_##LEVEL(msg); \
23 #define LEVEL_HANDLERS_DECLARATION(LEVEL) \
24 virtual void message_##LEVEL(const std::string& msg) = 0
25 #define LEVEL_HANDLERS_DEFAULT_IMPL(LEVEL) \
26 virtual void message_##LEVEL(const std::string& msg) \
28 if (os_ && os_->good()) \
29 (*os_) << "["#LEVEL"] " << msg << "\n"; \
64 DefaultLoggerImplementation(const DefaultLoggerImplementation&);
87 LoggingSingleton(
const LoggingSingleton& ls);
88 void operator=(
const LoggingSingleton& ls);
102 static LoggingSingleton s;
121 #undef LEVEL_HANDLERS
122 #undef LEVEL_HANDLERS_DECLARATION
123 #undef LEVEL_HANDLERS_DEFAULT_IMPL
124 #undef LEVEL_ENABLED_FIELD
125 #undef LEVEL_ENABLED_FIELD_INITIALIZER
#define LEVEL_ENABLED_FIELD_INITIALIZER(X, value)
DefaultLoggerImplementation & operator=(const DefaultLoggerImplementation &)
LoggerImplementation * get_logger_impl() const
getter for logger implementation
Default std::cout implementation of LoggerImplementation.
void set_logger_impl(LoggerImplementation *i)
setter for logger implementation
#define LEVEL_ENABLED_FIELD(X)
#define LEVEL_HANDLERS(LEVEL)
A base class for logger required by the library.
Main logging singleton used by the library. Can use provided LoggerImplementation if necessary...
#define LEVEL_HANDLERS_DECLARATION(LEVEL)
virtual ~LoggerImplementation()
virtual ~DefaultLoggerImplementation()
LoggerImplementation & operator=(const LoggerImplementation &)
static LoggingSingleton & instance()
#define LEVEL_HANDLERS_DEFAULT_IMPL(LEVEL)
LoggerImplementation * impl
DefaultLoggerImplementation()