[Box Backup-commit] COMMIT r2102 - box/trunk/lib/common

boxbackup-dev@fluffy.co.uk boxbackup-dev@fluffy.co.uk
Sat, 1 Mar 2008 22:54:56 +0000 (UTC)


Author: chris
Date: 2008-03-01 22:54:56 +0000 (Sat, 01 Mar 2008)
New Revision: 2102

Modified:
   box/trunk/lib/common/Logging.cpp
   box/trunk/lib/common/Logging.h
Log:
Add support for logging just to syslog (not console) at a given 
priority.


Modified: box/trunk/lib/common/Logging.cpp
===================================================================
--- box/trunk/lib/common/Logging.cpp	2008-03-01 22:52:15 UTC (rev 2101)
+++ box/trunk/lib/common/Logging.cpp	2008-03-01 22:54:56 UTC (rev 2102)
@@ -148,6 +148,31 @@
 	}
 }
 
+void Logging::LogToSyslog(Log::Level level, const std::string& rFile, 
+	int line, const std::string& rMessage)
+{
+	if (!sLogToSyslog)
+	{
+		return;
+	}
+
+	if (level > sGlobalLevel)
+	{
+		return;
+	}
+
+	std::string newMessage;
+	
+	if (sContextSet)
+	{
+		newMessage += "[" + sContext + "] ";
+	}
+	
+	newMessage += rMessage;
+
+	spSyslog->Log(level, rFile, line, newMessage);
+}
+
 void Logging::SetContext(std::string context)
 {
 	sContext = context;

Modified: box/trunk/lib/common/Logging.h
===================================================================
--- box/trunk/lib/common/Logging.h	2008-03-01 22:52:15 UTC (rev 2101)
+++ box/trunk/lib/common/Logging.h	2008-03-01 22:54:56 UTC (rev 2102)
@@ -32,6 +32,13 @@
 	Logging::Log(level, __FILE__, __LINE__, line.str()); \
 }
 
+#define BOX_SYSLOG(level, stuff) \
+{ \
+	std::ostringstream line; \
+	line << stuff; \
+	Logging::LogToSyslog(level, __FILE__, __LINE__, line.str()); \
+}
+
 #define BOX_FATAL(stuff)   BOX_LOG(Log::FATAL,   stuff)
 #define BOX_ERROR(stuff)   BOX_LOG(Log::ERROR,   stuff)
 #define BOX_WARNING(stuff) BOX_LOG(Log::WARNING, stuff)
@@ -196,6 +203,8 @@
 	static void Remove (Logger* pOldLogger);
 	static void Log(Log::Level level, const std::string& rFile, 
 		int line, const std::string& rMessage);
+	static void LogToSyslog(Log::Level level, const std::string& rFile, 
+		int line, const std::string& rMessage);
 	static void SetContext(std::string context);
 	static void ClearContext();
 	static void SetGlobalLevel(Log::Level level) { sGlobalLevel = level; }