27 #include <sys/types.h>
30 #define LOGGER_MULTITHREAD
31 #ifdef LOGGER_MULTITHREAD
57 enum loggerConf_ {L_nofile_ = 1 << 0,
62 #ifdef LOGGER_MULTITHREAD
66 static pthread_mutex_t lock_;
86 std::string logFileName_;
95 loggerConf_ configuration_;
105 int64_t initialTime_usec_;
110 unsigned int fileVerbosityLevel_;
115 unsigned int screenVerbosityLevel_;
123 inline static void lock();
128 inline static void unlock();
155 #define DEBUG_CONF(outputFile, \
157 fileVerbosityLevel, \
158 screenVerbosityLevel) { \
159 CUtil::Logger::getInstance().configure(outputFile, \
161 fileVerbosityLevel, \
162 screenVerbosityLevel); \
174 #define LOGGER(priority, msg) { \
175 std::ostringstream __debug_stream__; \
176 __debug_stream__ << msg; \
177 CUtil::Logger::getInstance().print(priority, __FILE__, __LINE__, \
178 __debug_stream__.str()); \
181 #ifndef _LOGGER_NO_LOG
187 #define LOG_ERROR(M) LOGGER(CUtil::Logger::EError, M)
192 #define LOG_WARNING(M) LOGGER(CUtil::Logger::EWarning, M)
197 #define LOG_MESSAGE(M) LOGGER(CUtil::Logger::EMessage, M)
202 #define LOG_INFO(M) LOGGER(CUtil::Logger::EInfo, M)
207 #define LOG_TRACE(M) LOGGER(CUtil::Logger::ETrace, M)
212 #define LOG_DEBUG(M) LOGGER(CUtil::Logger::EDebug, M)
216 #define LOG_ERROR(M) {}
217 #define LOG_WARNING(M) {}
218 #define LOG_MESSAGE(M) {}
219 #define LOG_INFO(M) {}
220 #define LOG_TRACE(M) {}
221 #define LOG_DEBUG(M) {}
246 static Logger& getInstance();
248 void print(
const unsigned int verbosityLevel,
249 const std::string& sourceFile,
251 const std::string& message);
253 void configure (
const std::string& outputFile,
254 const loggerConf configuration,
255 const int fileVerbosityLevel,
256 const int screenVerbosityLevel);
274 (Logger::loggerConf __a, Logger::loggerConf __b)
277 static_cast<int>(__b));
287 (Logger::loggerConf __a, Logger::loggerConf __b)
290 static_cast<int>(__b)); }