diff --git a/lib/cpp/src/TLogging.h b/lib/cpp/src/TLogging.h
index 788174e..3180d67 100644
--- a/lib/cpp/src/TLogging.h
+++ b/lib/cpp/src/TLogging.h
@@ -11,45 +11,45 @@
 #include <stdint.h>
 
 /**
- * GLOBAL_DEBUGGING_LEVEL = 0: all debugging turned off, debug macros undefined
- * GLOBAL_DEBUGGING_LEVEL = 1: all debugging turned on  
+ * T_GLOBAL_DEBUGGING_LEVEL = 0: all debugging turned off, debug macros undefined
+ * T_GLOBAL_DEBUGGING_LEVEL = 1: all debugging turned on  
  */
-#define GLOBAL_DEBUGGING_LEVEL 0
+#define T_GLOBAL_DEBUGGING_LEVEL 0
 
 
 /**
- * GLOBAL_LOGGING_LEVEL = 0: all logging turned off, logging macros undefined
- * GLOBAL_LOGGING_LEVEL = 1: all logging turned on  
+ * T_GLOBAL_LOGGING_LEVEL = 0: all logging turned off, logging macros undefined
+ * T_GLOBAL_LOGGING_LEVEL = 1: all logging turned on  
  */
-#define GLOBAL_LOGGING_LEVEL   1
+#define T_GLOBAL_LOGGING_LEVEL   1
 
 
 /** 
  * Standard wrapper around fprintf what will prefix the file name and line
- * number to the line. Uses GLOBAL_DEBUGGING_LEVEL to control whether it is
+ * number to the line. Uses T_GLOBAL_DEBUGGING_LEVEL to control whether it is
  * turned on or off.
  *
  * @param format_string 
  */
-#if GLOBAL_DEBUGGING_LEVEL > 0
-  #define DEBUG(format_string,...)                                        \
-    if (GLOBAL_DEBUGGING_LEVEL > 0) {                                     \
+#if T_GLOBAL_DEBUGGING_LEVEL > 0
+  #define T_DEBUG(format_string,...)                                        \
+    if (T_GLOBAL_DEBUGGING_LEVEL > 0) {                                     \
       fprintf(stderr,"[%s,%d] " #format_string " \n", __FILE__, __LINE__,##__VA_ARGS__); \
   } 
 #else
-  #define DEBUG(format_string,...)
+  #define T_DEBUG(format_string,...)
 #endif
 
 
 /** 
- * analagous to DEBUG but also prints the time 
+ * analagous to T_DEBUG but also prints the time 
  *
  * @param string  format_string input: printf style format string
  */
-#if GLOBAL_DEBUGGING_LEVEL > 0
-  #define DEBUG_T(format_string,...)                                      \
+#if T_GLOBAL_DEBUGGING_LEVEL > 0
+  #define T_DEBUG_T(format_string,...)                                    \
     {                                                                     \
-      if (GLOBAL_DEBUGGING_LEVEL > 0) {                                   \
+      if (T_GLOBAL_DEBUGGING_LEVEL > 0) {                                 \
         time_t now;                                                       \
         char dbgtime[26] ;                                                \
         time(&now);                                                       \
@@ -59,19 +59,19 @@
       }                                                                   \
     }
 #else
-  #define DEBUG_T(format_string,...)
+  #define T_DEBUG_T(format_string,...)
 #endif
 
 
 /** 
- * analagous to DEBUG but uses input level to determine whether or not the string
+ * analagous to T_DEBUG but uses input level to determine whether or not the string
  * should be logged.
  *
  * @param int     level: specified debug level
  * @param string  format_string input: format string
  */
-#define DEBUG_L(level, format_string,...)                               \
-  if ((level) > 0) {                                                    \
+#define T_DEBUG_L(level, format_string,...)                               \
+  if ((level) > 0) {                                                      \
     fprintf(stderr,"[%s,%d] " #format_string " \n", __FILE__, __LINE__,##__VA_ARGS__); \
   }
 
@@ -81,7 +81,7 @@
  *
  * @param string  format_string input: printf style format string
  */
-#define ERROR(format_string,...)                                        \
+#define T_ERROR(format_string,...)                                      \
   {                                                                     \
     time_t now;                                                         \
     char dbgtime[26] ;                                                  \
@@ -93,12 +93,12 @@
 
 
 /** 
- * Analagous to ERROR, additionally aborting the process.
+ * Analagous to T_ERROR, additionally aborting the process.
  * WARNING: macro calls abort(), ending program execution
  *
  * @param string  format_string input: printf style format string
  */
-#define ERROR_ABORT(format_string,...)                                  \
+#define T_ERROR_ABORT(format_string,...)                                \
   {                                                                     \
     time_t now;                                                         \
     char dbgtime[26] ;                                                  \
@@ -115,20 +115,20 @@
  *
  * @param string  format_string input: printf style format string
  */
-#if GLOBAL_LOGGING_LEVEL > 0
-  #define LOG_OPER(format_string,...)                                     \
-    {                                                                     \
-      if (GLOBAL_LOGGING_LEVEL > 0) {                                     \
-        time_t now;                                                       \
-        char dbgtime[26] ;                                                \
-        time(&now);                                                       \
-        ctime_r(&now, dbgtime);                                           \
-        dbgtime[24] = '\0';                                               \
-        fprintf(stderr,"[%s] " #format_string " \n", dbgtime,##__VA_ARGS__); \
-      }                                                                   \
+#if T_GLOBAL_LOGGING_LEVEL > 0
+  #define T_LOG_OPER(format_string,...)                                       \
+    {                                                                         \
+      if (T_GLOBAL_LOGGING_LEVEL > 0) {                                       \
+        time_t now;                                                           \
+        char dbgtime[26] ;                                                    \
+        time(&now);                                                           \
+        ctime_r(&now, dbgtime);                                               \
+        dbgtime[24] = '\0';                                                   \
+        fprintf(stderr,"[%s] " #format_string " \n", dbgtime,##__VA_ARGS__);  \
+      }                                                                       \
     } 
 #else
-  #define LOG_OPER(format_string,...)
+  #define T_LOG_OPER(format_string,...)
 #endif
 
 #endif	// _THRIFT_LOGGING_H
