6 #ifndef TAPKEE_LOGGING_H_
7 #define TAPKEE_LOGGING_H_
13 #define LEVEL_ENABLED_FIELD(X) bool X##_enabled
14 #define LEVEL_ENABLED_FIELD_INITIALIZER(X,value) X##_enabled(value)
15 #define LEVEL_HANDLERS(LEVEL) \
16 void enable_##LEVEL() { LEVEL##_enabled = true; }; \
17 void disable_##LEVEL() { LEVEL##_enabled = false; }; \
18 bool is_##LEVEL##_enabled() { return LEVEL##_enabled; };\
19 void message_##LEVEL(const std::string& msg) \
21 if (LEVEL##_enabled) \
22 impl->message_##LEVEL(msg); \
24 #define LEVEL_HANDLERS_DECLARATION(LEVEL) \
25 virtual void message_##LEVEL(const std::string& msg) = 0
26 #define LEVEL_HANDLERS_DEFAULT_IMPL(STREAM, LEVEL) \
27 virtual void message_##LEVEL(const std::string& msg) \
29 if (STREAM && STREAM->good()) \
30 (*STREAM) << "["#LEVEL"] " << msg << "\n"; \
65 DefaultLoggerImplementation(const DefaultLoggerImplementation&);
89 LoggingSingleton(
const LoggingSingleton& ls);
90 void operator=(
const LoggingSingleton& ls);
104 static LoggingSingleton s;
123 #undef LEVEL_HANDLERS
124 #undef LEVEL_HANDLERS_DECLARATION
125 #undef LEVEL_HANDLERS_DEFAULT_IMPL
126 #undef LEVEL_ENABLED_FIELD
127 #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_DEFAULT_IMPL(STREAM, LEVEL)
#define LEVEL_HANDLERS_DECLARATION(LEVEL)
virtual ~LoggerImplementation()
virtual ~DefaultLoggerImplementation()
LoggerImplementation & operator=(const LoggerImplementation &)
static LoggingSingleton & instance()
LoggerImplementation * impl
DefaultLoggerImplementation()