summaryrefslogtreecommitdiff
path: root/lib/common/Logging.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/common/Logging.h')
-rw-r--r--lib/common/Logging.h184
1 files changed, 184 insertions, 0 deletions
diff --git a/lib/common/Logging.h b/lib/common/Logging.h
index 15400711..bc0203bb 100644
--- a/lib/common/Logging.h
+++ b/lib/common/Logging.h
@@ -10,6 +10,11 @@
#ifndef LOGGING__H
#define LOGGING__H
+<<<<<<< HEAD
+=======
+#include <assert.h>
+
+>>>>>>> 0.12
#include <cerrno>
#include <cstring>
#include <iomanip>
@@ -41,6 +46,7 @@
if (Logging::IsEnabled(Log::TRACE)) \
{ BOX_LOG(Log::TRACE, stuff) }
+<<<<<<< HEAD
#define BOX_SYS_ERROR(stuff) \
stuff << ": " << std::strerror(errno) << " (" << errno << ")"
@@ -66,6 +72,48 @@ inline std::string GetNativeErrorMessage()
return _box_log_line.str();
#endif
}
+=======
+#define BOX_SYS_ERRNO_MESSAGE(error_number, stuff) \
+ stuff << ": " << std::strerror(error_number) << \
+ " (" << error_number << ")"
+
+#define BOX_FILE_MESSAGE(filename, message) \
+ message << ": " << filename
+
+#define BOX_SYS_FILE_ERRNO_MESSAGE(filename, error_number, message) \
+ BOX_SYS_ERRNO_MESSAGE(error_number, BOX_FILE_MESSAGE(filename, message))
+
+#define BOX_SYS_ERROR_MESSAGE(stuff) \
+ BOX_SYS_ERRNO_MESSAGE(errno, stuff)
+
+#define BOX_LOG_SYS_WARNING(stuff) \
+ BOX_WARNING(BOX_SYS_ERROR_MESSAGE(stuff))
+#define BOX_LOG_SYS_ERROR(stuff) \
+ BOX_ERROR(BOX_SYS_ERROR_MESSAGE(stuff))
+#define BOX_LOG_SYS_ERRNO(error_number, stuff) \
+ BOX_ERROR(BOX_SYS_ERRNO_MESSAGE(error_number, stuff))
+#define BOX_LOG_SYS_FATAL(stuff) \
+ BOX_FATAL(BOX_SYS_ERROR_MESSAGE(stuff))
+
+#define THROW_SYS_ERROR_NUMBER(message, error_number, exception, subtype) \
+ THROW_EXCEPTION_MESSAGE(exception, subtype, \
+ BOX_SYS_ERRNO_MESSAGE(error_number, message))
+
+#define THROW_SYS_ERROR(message, exception, subtype) \
+ THROW_SYS_ERROR_NUMBER(message, errno, exception, subtype)
+
+#define THROW_SYS_FILE_ERROR(message, filename, exception, subtype) \
+ THROW_SYS_ERROR_NUMBER(BOX_FILE_MESSAGE(filename, message), \
+ errno, exception, subtype)
+
+#define THROW_SYS_FILE_ERRNO(message, filename, error_number, exception, subtype) \
+ THROW_SYS_ERROR_NUMBER(BOX_FILE_MESSAGE(filename, message), \
+ error_number, exception, subtype)
+
+#define THROW_FILE_ERROR(message, filename, exception, subtype) \
+ THROW_EXCEPTION_MESSAGE(exception, subtype, \
+ BOX_FILE_MESSAGE(filename, message))
+>>>>>>> 0.12
#ifdef WIN32
#define BOX_LOG_WIN_ERROR(stuff) \
@@ -78,14 +126,40 @@ inline std::string GetNativeErrorMessage()
BOX_WARNING(stuff << ": " << GetErrorMessage(number))
#define BOX_LOG_NATIVE_ERROR(stuff) BOX_LOG_WIN_ERROR(stuff)
#define BOX_LOG_NATIVE_WARNING(stuff) BOX_LOG_WIN_WARNING(stuff)
+<<<<<<< HEAD
+=======
+ #define BOX_WIN_ERRNO_MESSAGE(error_number, stuff) \
+ stuff << ": " << GetErrorMessage(error_number)
+ #define THROW_WIN_ERROR_NUMBER(message, error_number, exception, subtype) \
+ THROW_EXCEPTION_MESSAGE(exception, subtype, \
+ BOX_WIN_ERRNO_MESSAGE(error_number, message))
+ #define THROW_WIN_FILE_ERRNO(message, filename, error_number, exception, subtype) \
+ THROW_WIN_ERROR_NUMBER(BOX_FILE_MESSAGE(filename, message), \
+ error_number, exception, subtype)
+ #define THROW_WIN_FILE_ERROR(message, filename, exception, subtype) \
+ THROW_WIN_FILE_ERRNO(message, filename, GetLastError(), \
+ exception, subtype)
+>>>>>>> 0.12
#else
#define BOX_LOG_NATIVE_ERROR(stuff) BOX_LOG_SYS_ERROR(stuff)
#define BOX_LOG_NATIVE_WARNING(stuff) BOX_LOG_SYS_WARNING(stuff)
#endif
+<<<<<<< HEAD
#define BOX_LOG_SOCKET_ERROR(_type, _name, _port, stuff) \
BOX_LOG_NATIVE_ERROR(stuff << " (type " << _type << ", name " << \
_name << ", port " << _port << ")")
+=======
+#ifdef WIN32
+# define BOX_LOG_SOCKET_ERROR(_type, _name, _port, stuff) \
+ BOX_LOG_WIN_ERROR_NUMBER(stuff << " (type " << _type << ", name " << \
+ _name << ", port " << _port << ")", WSAGetLastError())
+#else
+# define BOX_LOG_SOCKET_ERROR(_type, _name, _port, stuff) \
+ BOX_LOG_NATIVE_ERROR(stuff << " (type " << _type << ", name " << \
+ _name << ", port " << _port << ")")
+#endif
+>>>>>>> 0.12
#define BOX_FORMAT_HEX32(number) \
std::hex << \
@@ -110,6 +184,15 @@ inline std::string GetNativeErrorMessage()
std::setw(6) << \
timespec.tv_usec
+<<<<<<< HEAD
+=======
+#define BOX_FORMAT_MICROSECONDS(t) \
+ (int)((t) / 1000000) << "." << \
+ std::setw(6) << \
+ std::setfill('0') << \
+ (int)((t) % 1000000) << " seconds"
+
+>>>>>>> 0.12
#undef ERROR
namespace Log
@@ -157,8 +240,32 @@ class Logger
virtual const char* GetType() = 0;
Log::Level GetLevel() { return mCurrentLevel; }
+<<<<<<< HEAD
virtual void SetProgramName(const std::string& rProgramName) = 0;
+=======
+ bool IsEnabled(Log::Level level);
+
+ virtual void SetProgramName(const std::string& rProgramName) = 0;
+
+ class Guard
+ {
+ private:
+ Logger& mLogger;
+ Log::Level mOldLevel;
+
+ public:
+ Guard(Logger& Logger)
+ : mLogger(Logger)
+ {
+ mOldLevel = Logger.GetLevel();
+ }
+ ~Guard()
+ {
+ mLogger.Filter(mOldLevel);
+ }
+ };
+>>>>>>> 0.12
};
// --------------------------------------------------------------------------
@@ -266,22 +373,54 @@ class Logging
static void SetProgramName(const std::string& rProgramName);
static std::string GetProgramName() { return sProgramName; }
static void SetFacility(int facility);
+<<<<<<< HEAD
+=======
+ static Console& GetConsole() { return *spConsole; }
+ static Syslog& GetSyslog() { return *spSyslog; }
+>>>>>>> 0.12
class Guard
{
private:
Log::Level mOldLevel;
+<<<<<<< HEAD
+=======
+ static int sGuardCount;
+ static Log::Level sOriginalLevel;
+>>>>>>> 0.12
public:
Guard(Log::Level newLevel)
{
mOldLevel = Logging::GetGlobalLevel();
+<<<<<<< HEAD
+=======
+ if(sGuardCount == 0)
+ {
+ sOriginalLevel = mOldLevel;
+ }
+ sGuardCount++;
+>>>>>>> 0.12
Logging::SetGlobalLevel(newLevel);
}
~Guard()
{
+<<<<<<< HEAD
Logging::SetGlobalLevel(mOldLevel);
}
+=======
+ sGuardCount--;
+ Logging::SetGlobalLevel(mOldLevel);
+ }
+
+ static bool IsActive() { return (sGuardCount > 0); }
+ static Log::Level GetOriginalLevel() { return sOriginalLevel; }
+ static bool IsGuardingFrom(Log::Level originalLevel)
+ {
+ return IsActive() &&
+ (int)sOriginalLevel >= (int)originalLevel;
+ }
+>>>>>>> 0.12
};
class Tagger
@@ -290,15 +429,33 @@ class Logging
std::string mOldTag;
public:
+<<<<<<< HEAD
Tagger(const std::string& rTempTag)
{
mOldTag = Logging::GetProgramName();
+=======
+ Tagger()
+ : mOldTag(Logging::GetProgramName())
+ {
+ }
+ Tagger(const std::string& rTempTag)
+ : mOldTag(Logging::GetProgramName())
+ {
+>>>>>>> 0.12
Logging::SetProgramName(mOldTag + " " + rTempTag);
}
~Tagger()
{
Logging::SetProgramName(mOldTag);
}
+<<<<<<< HEAD
+=======
+
+ void Change(const std::string& newTempTag)
+ {
+ Logging::SetProgramName(mOldTag + " " + newTempTag);
+ }
+>>>>>>> 0.12
};
};
@@ -341,6 +498,33 @@ class HideExceptionMessageGuard
bool mOldHiddenState;
};
+<<<<<<< HEAD
+=======
+class HideSpecificExceptionGuard
+{
+ private:
+ std::pair<int, int> mExceptionCode;
+
+ public:
+ typedef std::vector<std::pair<int, int> > SuppressedExceptions_t;
+ static SuppressedExceptions_t sSuppressedExceptions;
+
+ HideSpecificExceptionGuard(int type, int subtype)
+ : mExceptionCode(std::pair<int, int>(type, subtype))
+ {
+ sSuppressedExceptions.push_back(mExceptionCode);
+ }
+ ~HideSpecificExceptionGuard()
+ {
+ SuppressedExceptions_t::reverse_iterator i =
+ sSuppressedExceptions.rbegin();
+ assert(*i == mExceptionCode);
+ sSuppressedExceptions.pop_back();
+ }
+ static bool IsHidden(int type, int subtype);
+};
+
+>>>>>>> 0.12
std::string PrintEscapedBinaryData(const std::string& rInput);
#endif // LOGGING__H