Show imap_debug.h syntax highlighted
#ifndef IMAP_DEBUG_H
#define IMAP_DEBUG_H
#ifdef CWDEBUG
#include "sys.h"
#include "debug.h"
#endif
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <boost/thread/mutex.hpp>
#include <boost/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
extern boost::recursive_mutex stdio_mutex;
class Logger
{
public:
static Logger *getLogger();
static void deleteLogger() { delete logger; logger = NULL; }
void log_info(const char *message, const char *file, int line);
void log_debug(const char *message, const char *file, int line);
void log_warning(const char *message, const char *file, int line);
void log_error(const char *message, const char *file, int line);
void log_assertion(const char *message, const char *file, int line);
private:
static Logger *logger;
std::ofstream out;
Logger() : out("imap_webcache.log") {
}
};
namespace IMAP {
extern bool debug_logging;
extern bool info_logging;
};
inline void imap_assert(bool condition, const char *message, const char *filename = "unspecified file", int line = 0)
{
if(condition) return;
boost::recursive_mutex::scoped_lock lk(stdio_mutex);
Logger::getLogger()->log_assertion(message, filename, line);
abort();
}
inline void imap_assert(bool condition, const std::string &message, const char *filename = "unspecified file", int line = 0) {
imap_assert(condition, message.c_str(), filename, line);
}
inline void log_info(const char *message, const char *filename = "unspecified file", int line = 0)
{
if(!IMAP::info_logging) return;
Logger::getLogger()->log_info(message, filename, line);
}
inline void log_info(const std::string &message, const char *filename = "unspecified file", int line = 0) {
log_info(message.c_str(), filename, line);
}
inline void log_debug(const char *message, const char *filename = "unspecified file", int line = 0)
{
if(!IMAP::debug_logging) return;
Logger::getLogger()->log_debug(message, filename, line);
}
inline void log_debug(const std::string &message, const char *filename = "unspecified file", int line = 0) {
log_debug(message.c_str(), filename, line);
}
inline void log_warn(const char *message, const char *filename = "unspecified file", int line = 0)
{
Logger::getLogger()->log_warning(message, filename, line);
}
inline void log_warn(const std::string &message, const char *filename = "unspecified file", int line = 0) {
log_warn(message.c_str(), filename, line);
}
inline void log_error(const char *message, const char *filename = "unspecified file", int line = 0)
{
Logger::getLogger()->log_error(message, filename, line);
}
inline void log_error(const std::string &message, const char *filename = "unspecified file", int line = 0) {
log_error(message.c_str(), filename, line);
}
#define WARN(msg) log_warn(msg, __FILE__, __LINE__)
#define ERROR(msg) log_error(msg, __FILE__, __LINE__)
#define INFO(msg) log_info(msg, __FILE__, __LINE__)
#define DEBUG(msg) log_debug(msg, __FILE__, __LINE__)
#define ASSERT(cond, msg) imap_assert(cond, msg, __FILE__, __LINE__)
#endif
See more files for this project here