18 #ifndef _BASE_LOGGING_PRINTF_STYLE_H_
19 #define _BASE_LOGGING_PRINTF_STYLE_H_
26 #if defined(BASE_LOG_DISABLE)
27 #define BASE_LOG_PRIORITY 0
28 #elif defined(BASE_LOG_FATAL)
29 #define BASE_LOG_PRIORITY 1
31 #elif defined(BASE_LOG_ERROR)
32 #define BASE_LOG_PRIORITY 2
34 #elif defined(BASE_LOG_WARN)
35 #define BASE_LOG_PRIORITY 3
37 #elif defined(BASE_LOG_INFO)
38 #define BASE_LOG_PRIORITY 4
40 #elif defined(BASE_LOG_DEBUG)
41 #define BASE_LOG_PRIORITY 5
45 #ifndef BASE_LOG_PRIORITY
48 #define BASE_LOG_PRIORITY 6
51 #ifdef BASE_LONG_NAMES
53 #define BASE_LOG_DEBUG(FORMAT, ARGS...)
54 #define BASE_LOG_INFO(FORMAT, ARGS...)
55 #define BASE_LOG_WARN(FORMAT, ARGS...)
56 #define BASE_LOG_ERROR(FORMAT, ARGS...)
57 #define BASE_LOG_FATAL(FORMAT, ARGS...)
58 #define BASE_LOG_CONFIGURE(PRIO, STREAM)
60 #define LOG_DEBUG(FORMAT, ARGS...)
61 #define LOG_INFO(FORMAT, ARGS...)
62 #define LOG_WARN(FORMAT, ARGS...)
63 #define LOG_ERROR(FORMAT, ARGS...)
64 #define LOG_FATAL(FORMAT, ARGS...)
65 #define LOG_CONFIGURE(PRIO, STREAM)
66 #endif // BASE_LONG_NAMES
68 #ifndef BASE_LOG_NAMESPACE
69 #define BASE_LOG_NAMESPACE ""
70 #endif // BASE_LOG_NAMESPACE
73 #define __STRINGIFY_(X) #X
75 #define __STRINGIFY(X) __STRINGIFY_(X)
84 #define __LOG(PRIO, FORMAT, ARGS ...) { ::base::logging::Logger::getInstance()->log(::base::logging::PRIO,__PRETTY_FUNCTION__, __FILE__, __LINE__, __STRINGIFY(BASE_LOG_NAMESPACE), FORMAT, ## ARGS); }
86 #define __LOG(PRIO, FORMAT, ARGS ...) { ::base::logging::Logger::getInstance()->log(::base::logging::PRIO,__func__, __FILE__, __LINE__, __STRINGIFY(BASE_LOG_NAMESPACE), FORMAT, ## ARGS); }
89 #ifdef BASE_LONG_NAMES
91 #if BASE_LOG_PRIORITY >= 1
93 #define BASE_LOG_FATAL(FORMAT, ARGS...) __LOG(FATAL_P, FORMAT, ## ARGS)
96 #if BASE_LOG_PRIORITY >= 2
98 #define BASE_LOG_ERROR(FORMAT, ARGS...) __LOG(ERROR_P, FORMAT, ## ARGS)
101 #if BASE_LOG_PRIORITY >= 3
103 #define BASE_LOG_WARN(FORMAT, ARGS...) __LOG(WARN_P, FORMAT, ## ARGS)
106 #if BASE_LOG_PRIORITY >= 4
108 #define BASE_LOG_INFO(FORMAT, ARGS...) __LOG(INFO_P, FORMAT, ## ARGS)
111 #if BASE_LOG_PRIORITY >= 5
112 #undef BASE_LOG_DEBUG
113 #define BASE_LOG_DEBUG(FORMAT, ARGS...) __LOG(DEBUG_P, FORMAT, ## ARGS)
116 #undef BASE_LOG_CONFIGURE
117 #define BASE_LOG_CONFIGURE(PRIO,STREAM) { ::base::logging::Logger::getInstance()->configure(::base::logging::PRIO, STREAM); }
119 #else // #ifdef BASE_LONG_NAMES
124 #define LOG_CONFIGURE(PRIO,STREAM) { ::base::logging::Logger::getInstance()->configure(::base::logging::PRIO, STREAM); }
126 #if BASE_LOG_PRIORITY >= 1
128 #define LOG_FATAL(FORMAT, ARGS...) __LOG(FATAL_P, FORMAT, ## ARGS)
131 #if BASE_LOG_PRIORITY >= 2
133 #define LOG_ERROR(FORMAT, ARGS...) __LOG(ERROR_P, FORMAT, ## ARGS)
136 #if BASE_LOG_PRIORITY >= 3
138 #define LOG_WARN(FORMAT, ARGS...) __LOG(WARN_P, FORMAT, ## ARGS)
141 #if BASE_LOG_PRIORITY >= 4
143 #define LOG_INFO(FORMAT, ARGS...) __LOG(INFO_P, FORMAT, ## ARGS)
146 #if BASE_LOG_PRIORITY >= 5
148 #define LOG_DEBUG(FORMAT, ARGS...) __LOG(DEBUG_P, FORMAT, ## ARGS)
151 #endif // BASE_LONG_NAMES
160 #include "../Singleton.hpp"
173 enum Priority {
UNKNOWN = 0,
UNKNOWN_P = 0,
FATAL = 1,
FATAL_P =1,
ERROR = 2,
ERROR_P = 2,
WARN = 3,
WARN_P = 3,
INFO = 4,
INFO_P = 4,
DEBUG = 5,
DEBUG_P = 5,
ENDPRIORITIES };
234 void log(
Priority priority,
const char*
function,
const char* filename,
int line,
const char* name_space,
const char* format, ...)
const;
240 void logBuffer(
Priority priority,
const char*
function,
const char* file,
int line,
const char* name_space,
const char* buffer)
const;
247 Priority getLogLevelFromEnv()
const;
253 bool getLogColorFromEnv()
const;
262 std::vector<std::string> mPriorityNames;
266 const char* mpColorEnd;
268 std::vector<std::string> mLogFormatNames;
Definition: logging_printf_style.h:173
void log(Priority priority, const char *function, const char *filename, int line, const char *name_space, const char *format,...) const
Definition: logging_printf_style.cpp:135
void configure(Priority priority, FILE *outputStream)
Definition: logging_printf_style.cpp:63
Definition: logging_printf_style.h:177
Definition: logging_printf_style.h:173
Definition: Singleton.hpp:7
virtual ~Logger()
Definition: logging_printf_style.cpp:59
Definition: logging_printf_style.h:173
Definition: logging_printf_style.h:173
Definition: logging_printf_style.h:173
void logBuffer(Priority priority, const char *function, const char *file, int line, const char *name_space, const char *buffer) const
Definition: logging_printf_style.cpp:150
Definition: logging_printf_style.h:173
Definition: logging_printf_style.h:177
LogFormat
Definition: logging_printf_style.h:177
Definition: logging_printf_style.h:173
Logger()
Definition: logging_printf_style.cpp:20
Definition: logging_printf_style.h:173
Definition: logging_printf_style.h:173
Definition: logging_printf_style.h:177
Definition: logging_printf_style.h:173
Definition: logging_printf_style.h:177
Definition: logging_printf_style.h:173
Definition: logging_printf_style.h:173
Priority
Definition: logging_printf_style.h:173
Definition: logging_printf_style.h:173
Logger is a logger that allows priority based logging with minimal impact on performance and minimal ...
Definition: logging_printf_style.h:203