Index: /trunk/include/iprt/log.h
===================================================================
--- /trunk/include/iprt/log.h	(revision 55979)
+++ /trunk/include/iprt/log.h	(revision 55980)
@@ -124,18 +124,4 @@
 #endif
 
-/** @def LOG_INSTANCE
- * Active logging instance.
- */
-#ifndef LOG_INSTANCE
-# define LOG_INSTANCE       NULL
-#endif
-
-/** @def LOG_REL_INSTANCE
- * Active release logging instance.
- */
-#ifndef LOG_REL_INSTANCE
-# define LOG_REL_INSTANCE   NULL
-#endif
-
 /** @def LOG_FN_FMT
  * You can use this to specify you desired way of printing __PRETTY_FUNCTION__
@@ -144,4 +130,11 @@
 #ifndef LOG_FN_FMT
 # define LOG_FN_FMT "%Rfn"
+#endif
+
+#ifdef LOG_INSTANCE
+# error "LOG_INSTANCE is no longer supported."
+#endif
+#ifdef LOG_REL_INSTANCE
+# error "LOG_REL_INSTANCE is no longer supported."
 #endif
 
@@ -523,39 +516,45 @@
 #ifdef LOG_ENABLED
 # if defined(LOG_USE_C99)
-#  define _LogRemoveParentheseis(...)                           __VA_ARGS__
-#  define _LogIt(a_pvInst, a_fFlags, a_iGroup, ...)             RTLogLoggerEx((PRTLOGGER)a_pvInst, a_fFlags, a_iGroup, __VA_ARGS__)
-#  define LogIt(a_pvInst, a_fFlags, a_iGroup, fmtargs)          _LogIt(a_pvInst, a_fFlags, a_iGroup, _LogRemoveParentheseis fmtargs)
-#  define _LogItAlways(a_pvInst, a_fFlags, a_iGroup, ...)       RTLogLoggerEx((PRTLOGGER)a_pvInst, a_fFlags, ~0U, __VA_ARGS__)
-#  define LogItAlways(a_pvInst, a_fFlags, a_iGroup, fmtargs)    _LogItAlways(a_pvInst, a_fFlags, a_iGroup, _LogRemoveParentheseis fmtargs)
+#  define _LogRemoveParentheseis(...)                   __VA_ARGS__
+#  define _LogIt(a_fFlags, a_iGroup, ...) \
+   do \
+   { \
+        register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(a_fFlags, a_iGroup); \
+        if (RT_LIKELY(!LogIt_pLogger)) \
+        {   /* likely */ } \
+        else \
+            RTLogLoggerEx(LogIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \
+   } while (0)
+#  define LogIt(a_fFlags, a_iGroup, fmtargs)            _LogIt(a_fFlags, a_iGroup, _LogRemoveParentheseis fmtargs)
+#  define _LogItAlways(a_fFlags, a_iGroup, ...)          RTLogLoggerEx(NULL, a_fFlags, UINT32_MAX, __VA_ARGS__)
+#  define LogItAlways(a_fFlags, a_iGroup, fmtargs)      _LogItAlways(a_fFlags, a_iGroup, _LogRemoveParentheseis fmtargs)
         /** @todo invent a flag or something for skipping the group check so we can pass iGroup. LogItAlways. */
 # else
-#  define LogIt(a_pvInst, a_fFlags, a_iGroup, fmtargs) \
+#  define LogIt(a_fFlags, a_iGroup, fmtargs) \
     do \
     { \
-        register PRTLOGGER LogIt_pLogger = (PRTLOGGER)(a_pvInst) ? (PRTLOGGER)(a_pvInst) : RTLogDefaultInstance(); \
-        if (    LogIt_pLogger \
-            && !(LogIt_pLogger->fFlags & RTLOGFLAGS_DISABLED)) \
+        register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(a_fFlags, a_iGroup); \
+        if (RT_LIKELY(!LogIt_pLogger)) \
+        {   /* likely */ } \
+        else \
         { \
-            register unsigned LogIt_fFlags = LogIt_pLogger->afGroups[(unsigned)(a_iGroup) < LogIt_pLogger->cGroups ? (unsigned)(a_iGroup) : 0]; \
-            if ((LogIt_fFlags & ((a_fFlags) | RTLOGGRPFLAGS_ENABLED)) == ((a_fFlags) | RTLOGGRPFLAGS_ENABLED)) \
-                LogIt_pLogger->pfnLogger fmtargs; \
+            LogIt_pLogger->pfnLogger fmtargs; \
         } \
     } while (0)
-#  define LogItAlways(a_pvInst, a_fFlags, a_iGroup, fmtargs) \
+#  define LogItAlways(a_fFlags, a_iGroup, fmtargs) \
     do \
     { \
-        register PRTLOGGER LogIt_pLogger = (PRTLOGGER)(a_pvInst) ? (PRTLOGGER)(a_pvInst) : RTLogDefaultInstance(); \
-        if (   LogIt_pLogger \
-            && !(LogIt_pLogger->fFlags & RTLOGFLAGS_DISABLED)) \
+        register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(0, UINT32_MAX); \
+        if (LogIt_pLogger) \
             LogIt_pLogger->pfnLogger fmtargs; \
     } while (0)
 # endif
 #else
-# define LogIt(a_pvInst, a_fFlags, a_iGroup, fmtargs)       do { } while (0)
-# define LogItAlways(a_pvInst, a_fFlags, a_iGroup, fmtargs) do { } while (0)
+# define LogIt(a_fFlags, a_iGroup, fmtargs)             do { } while (0)
+# define LogItAlways(a_fFlags, a_iGroup, fmtargs)       do { } while (0)
 # if defined(LOG_USE_C99)
-#  define _LogRemoveParentheseis(...)                       __VA_ARGS__
-#  define _LogIt(a_pvInst, a_fFlags, a_iGroup, ...)         do { } while (0)
-#  define _LogItAlways(a_pvInst, a_fFlags, a_iGroup, ...)   do { } while (0)
+#  define _LogRemoveParentheseis(...)                   __VA_ARGS__
+#  define _LogIt(a_fFlags, a_iGroup, ...)               do { } while (0)
+#  define _LogItAlways(a_fFlags, a_iGroup, ...)         do { } while (0)
 # endif
 #endif
@@ -565,45 +564,45 @@
  * Level 1 logging that works regardless of the group settings.
  */
-#define LogAlways(a)    LogItAlways(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
+#define LogAlways(a)    LogItAlways(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
 
 /** @def Log
  * Level 1 logging.
  */
-#define Log(a)          LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
+#define Log(a)          LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
 
 /** @def Log2
  * Level 2 logging.
  */
-#define Log2(a)         LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_2,  LOG_GROUP, a)
+#define Log2(a)         LogIt(RTLOGGRPFLAGS_LEVEL_2,  LOG_GROUP, a)
 
 /** @def Log3
  * Level 3 logging.
  */
-#define Log3(a)         LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_3,  LOG_GROUP, a)
+#define Log3(a)         LogIt(RTLOGGRPFLAGS_LEVEL_3,  LOG_GROUP, a)
 
 /** @def Log4
  * Level 4 logging.
  */
-#define Log4(a)         LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_4,  LOG_GROUP, a)
+#define Log4(a)         LogIt(RTLOGGRPFLAGS_LEVEL_4,  LOG_GROUP, a)
 
 /** @def Log5
  * Level 5 logging.
  */
-#define Log5(a)         LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_5,  LOG_GROUP, a)
+#define Log5(a)         LogIt(RTLOGGRPFLAGS_LEVEL_5,  LOG_GROUP, a)
 
 /** @def Log6
  * Level 6 logging.
  */
-#define Log6(a)         LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
+#define Log6(a)         LogIt(RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
 
 /** @def LogFlow
  * Logging of execution flow.
  */
-#define LogFlow(a)      LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
+#define LogFlow(a)      LogIt(RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
 
 /** @def LogLelik
  *  lelik logging.
  */
-#define LogLelik(a)     LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LELIK,    LOG_GROUP, a)
+#define LogLelik(a)     LogIt(RTLOGGRPFLAGS_LELIK,    LOG_GROUP, a)
 
 
@@ -611,50 +610,50 @@
  * michael logging.
  */
-#define LogMichael(a)   LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_MICHAEL,  LOG_GROUP, a)
+#define LogMichael(a)   LogIt(RTLOGGRPFLAGS_MICHAEL,  LOG_GROUP, a)
 
 /** @def LogSunlover
  * sunlover logging.
  */
-#define LogSunlover(a)  LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_SUNLOVER, LOG_GROUP, a)
+#define LogSunlover(a)  LogIt(RTLOGGRPFLAGS_SUNLOVER, LOG_GROUP, a)
 
 /** @def LogAchim
  * Achim logging.
  */
-#define LogAchim(a)     LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_ACHIM,    LOG_GROUP, a)
+#define LogAchim(a)     LogIt(RTLOGGRPFLAGS_ACHIM,    LOG_GROUP, a)
 
 /** @def LogSander
  * Sander logging.
  */
-#define LogSander(a)    LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_SANDER,   LOG_GROUP, a)
+#define LogSander(a)    LogIt(RTLOGGRPFLAGS_SANDER,   LOG_GROUP, a)
 
 /** @def LogKlaus
  *  klaus logging.
  */
-#define LogKlaus(a)     LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_KLAUS,    LOG_GROUP, a)
+#define LogKlaus(a)     LogIt(RTLOGGRPFLAGS_KLAUS,    LOG_GROUP, a)
 
 /** @def LogFrank
  *  frank logging.
  */
-#define LogFrank(a)     LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_FRANK,    LOG_GROUP, a)
+#define LogFrank(a)     LogIt(RTLOGGRPFLAGS_FRANK,    LOG_GROUP, a)
 
 /** @def LogBird
  * bird logging.
  */
-#define LogBird(a)      LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_BIRD,     LOG_GROUP, a)
+#define LogBird(a)      LogIt(RTLOGGRPFLAGS_BIRD,     LOG_GROUP, a)
 
 /** @def LogAleksey
  * aleksey logging.
  */
-#define LogAleksey(a)   LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_ALEKSEY,  LOG_GROUP, a)
+#define LogAleksey(a)   LogIt(RTLOGGRPFLAGS_ALEKSEY,  LOG_GROUP, a)
 
 /** @def LogDJ
  * dj logging.
  */
-#define LogDJ(a)        LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_DJ,  LOG_GROUP, a)
+#define LogDJ(a)        LogIt(RTLOGGRPFLAGS_DJ,  LOG_GROUP, a)
 
 /** @def LogNoName
  * NoName logging.
  */
-#define LogNoName(a)    LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_NONAME,   LOG_GROUP, a)
+#define LogNoName(a)    LogIt(RTLOGGRPFLAGS_NONAME,   LOG_GROUP, a)
 
 /** @def LogWarning
@@ -665,5 +664,5 @@
 #if defined(LOG_USE_C99)
 # define LogWarning(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "WARNING! %M", _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "WARNING! %M", _LogRemoveParentheseis a )
 #else
 # define LogWarning(a) \
@@ -686,5 +685,5 @@
 #ifdef LOG_USE_C99
 # define LogTraceMsg(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_FLOW, LOG_GROUP, ">>>>> %s (%d): " LOG_FN_FMT ": %M", __FILE__, __LINE__, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, ">>>>> %s (%d): " LOG_FN_FMT ": %M", __FILE__, __LINE__, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogTraceMsg(a) \
@@ -702,5 +701,5 @@
 #ifdef LOG_USE_C99
 # define LogFunc(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogFunc(a) \
@@ -718,5 +717,5 @@
 #ifdef LOG_USE_C99
 # define Log2Func(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define Log2Func(a) \
@@ -734,5 +733,5 @@
 #ifdef LOG_USE_C99
 # define Log3Func(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define Log3Func(a) \
@@ -750,5 +749,5 @@
 #ifdef LOG_USE_C99
 # define Log4Func(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define Log4Func(a) \
@@ -766,5 +765,5 @@
 #ifdef LOG_USE_C99
 # define Log5Func(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define Log5Func(a) \
@@ -782,5 +781,5 @@
 #ifdef LOG_USE_C99
 # define Log6Func(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define Log6Func(a) \
@@ -796,5 +795,5 @@
 #ifdef LOG_USE_C99
 # define LogThisFunc(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogThisFunc(a) \
@@ -812,5 +811,5 @@
 #ifdef LOG_USE_C99
 # define LogFlowFunc(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogFlowFunc(a) \
@@ -825,5 +824,5 @@
 #ifdef LOG_USE_C99
 # define LogWarningFunc(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": WARNING! %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": WARNING! %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogWarningFunc(a) \
@@ -839,5 +838,5 @@
 #ifdef LOG_USE_C99
 # define LogFlowThisFunc(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_FLOW, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogFlowThisFunc(a) \
@@ -853,5 +852,5 @@
 #ifdef LOG_USE_C99
 # define LogWarningThisFunc(a) \
-    _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": WARNING! %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": WARNING! %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogWarningThisFunc(a) \
@@ -897,8 +896,8 @@
  */
 #ifdef LOG_ENABLED
-# define LogIsItEnabled(a_pvInst, a_fFlags, a_iGroup) \
-    LogIsItEnabledInternal((a_pvInst), (unsigned)(a_iGroup), (unsigned)(a_fFlags))
-#else
-# define LogIsItEnabled(a_pvInst, a_fFlags, a_iGroup) (false)
+# define LogIsItEnabled(a_fFlags, a_iGroup) \
+    LogIsItEnabledInternal((unsigned)(a_iGroup), (unsigned)(a_fFlags))
+#else
+# define LogIsItEnabled(a_fFlags, a_iGroup) (false)
 #endif
 
@@ -906,35 +905,35 @@
  * Checks whether level 1 logging is enabled.
  */
-#define LogIsEnabled()      LogIsItEnabled(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP)
+#define LogIsEnabled()      LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP)
 
 /** @def LogIs2Enabled
  * Checks whether level 2 logging is enabled.
  */
-#define LogIs2Enabled()     LogIsItEnabled(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP)
+#define LogIs2Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP)
 
 /** @def LogIs3Enabled
  * Checks whether level 3 logging is enabled.
  */
-#define LogIs3Enabled()     LogIsItEnabled(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP)
+#define LogIs3Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP)
 
 /** @def LogIs4Enabled
  * Checks whether level 4 logging is enabled.
  */
-#define LogIs4Enabled()     LogIsItEnabled(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP)
+#define LogIs4Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP)
 
 /** @def LogIs5Enabled
  * Checks whether level 5 logging is enabled.
  */
-#define LogIs5Enabled()     LogIsItEnabled(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP)
+#define LogIs5Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP)
 
 /** @def LogIs6Enabled
  * Checks whether level 6 logging is enabled.
  */
-#define LogIs6Enabled()     LogIsItEnabled(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP)
+#define LogIs6Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP)
 
 /** @def LogIsFlowEnabled
  * Checks whether execution flow logging is enabled.
  */
-#define LogIsFlowEnabled()  LogIsItEnabled(LOG_INSTANCE, RTLOGGRPFLAGS_FLOW, LOG_GROUP)
+#define LogIsFlowEnabled()  LogIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP)
 
 
@@ -1009,4 +1008,7 @@
  * Write to specific logger if group enabled.
  */
+/** @def LogRelItLikely
+ * Write to specific logger if group enabled, assuming it likely it is enabled.
+ */
 /** @def LogRelMaxIt
  * Write to specific logger if group enabled and at less than a_cMax messages
@@ -1016,20 +1018,31 @@
 # if defined(LOG_USE_C99)
 #  define _LogRelRemoveParentheseis(...)                    __VA_ARGS__
-#  define _LogRelIt(a_pvInst, a_fFlags, a_iGroup, ...) \
+#  define _LogRelIt(a_fFlags, a_iGroup, ...) \
     do \
     { \
-        PRTLOGGER LogRelIt_pLogger = (PRTLOGGER)(a_pvInst) ? (PRTLOGGER)(a_pvInst) : RTLogRelDefaultInstance(); \
-        if (   LogRelIt_pLogger \
-            && !(LogRelIt_pLogger->fFlags & RTLOGFLAGS_DISABLED)) \
+        PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+        if (RT_LIKELY(!LogRelIt_pLogger)) \
+        { /* likely */ } \
+        else \
             RTLogLoggerEx(LogRelIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \
-        _LogIt(LOG_INSTANCE, a_fFlags, a_iGroup, __VA_ARGS__); \
+        _LogIt(a_fFlags, a_iGroup, __VA_ARGS__); \
     } while (0)
-#  define LogRelIt(a_pvInst, a_fFlags, a_iGroup, fmtargs)   _LogRelIt(a_pvInst, a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs)
-#  define _LogRelMaxIt(a_cMax, a_pvInst, a_fFlags, a_iGroup, ...) \
+#  define LogRelIt(a_fFlags, a_iGroup, fmtargs) \
+    _LogRelIt(a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs)
+#  define _LogRelItLikely(a_fFlags, a_iGroup, ...) \
     do \
     { \
-        PRTLOGGER LogRelIt_pLogger = (PRTLOGGER)(a_pvInst) ? (PRTLOGGER)(a_pvInst) : RTLogRelDefaultInstance(); \
-        if (   LogRelIt_pLogger \
-            && !(LogRelIt_pLogger->fFlags & RTLOGFLAGS_DISABLED)) \
+        PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+        if (LogRelIt_pLogger) \
+            RTLogLoggerEx(LogRelIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \
+        _LogIt(a_fFlags, a_iGroup, __VA_ARGS__); \
+    } while (0)
+#  define LogRelItLikely(a_fFlags, a_iGroup, fmtargs) \
+    _LogRelItLikely(a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs)
+#  define _LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, ...) \
+    do \
+    { \
+        PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+        if (LogRelIt_pLogger) \
         { \
             static uint32_t s_LogRelMaxIt_cLogged = 0; \
@@ -1040,50 +1053,56 @@
             } \
         } \
-        _LogIt(LOG_INSTANCE, a_fFlags, a_iGroup, __VA_ARGS__); \
+        _LogIt(a_fFlags, a_iGroup, __VA_ARGS__); \
     } while (0)
-#  define LogRelMaxIt(a_cMax, a_pvInst, a_fFlags, a_iGroup, fmtargs) \
-    _LogRelMaxIt(a_cMax, a_pvInst, a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs)
+#  define LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, fmtargs) \
+    _LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, _LogRelRemoveParentheseis fmtargs)
 # else
-#  define LogRelIt(a_pvInst, a_fFlags, a_iGroup, fmtargs) \
+#  define LogRelItLikely(a_fFlags, a_iGroup, fmtargs) \
    do \
    { \
-       PRTLOGGER LogRelIt_pLogger = (PRTLOGGER)(a_pvInst) ? (PRTLOGGER)(a_pvInst) : RTLogRelDefaultInstance(); \
-       if (   LogRelIt_pLogger \
-           && !(LogRelIt_pLogger->fFlags & RTLOGFLAGS_DISABLED)) \
+       PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+       if (LogRelIt_pLogger) \
        { \
-           unsigned LogIt_fFlags = LogRelIt_pLogger->afGroups[(unsigned)(a_iGroup) < LogRelIt_pLogger->cGroups ? (unsigned)(a_iGroup) : 0]; \
-           if ((LogIt_fFlags & ((a_fFlags) | RTLOGGRPFLAGS_ENABLED)) == ((a_fFlags) | RTLOGGRPFLAGS_ENABLED)) \
-               LogRelIt_pLogger->pfnLogger fmtargs; \
+           LogRelIt_pLogger->pfnLogger fmtargs; \
        } \
-       LogIt(LOG_INSTANCE, a_fFlags, a_iGroup, fmtargs); \
+       LogIt(a_fFlags, a_iGroup, fmtargs); \
   } while (0)
-#  define LogRelMaxIt(a_cMax, a_pvInst, a_fFlags, a_iGroup, fmtargs) \
+#  define LogRelIt(a_fFlags, a_iGroup, fmtargs) \
    do \
    { \
-       PRTLOGGER LogRelIt_pLogger = (PRTLOGGER)(a_pvInst) ? (PRTLOGGER)(a_pvInst) : RTLogRelDefaultInstance(); \
-       if (   LogRelIt_pLogger \
-           && !(LogRelIt_pLogger->fFlags & RTLOGFLAGS_DISABLED)) \
+       PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+       if (RT_LIKELY(!LogRelIt_pLogger)) \
+       { /* likely */ } \
+       else \
        { \
-           unsigned LogIt_fFlags = LogRelIt_pLogger->afGroups[(unsigned)(a_iGroup) < LogRelIt_pLogger->cGroups ? (unsigned)(a_iGroup) : 0]; \
-           if ((LogIt_fFlags & ((a_fFlags) | RTLOGGRPFLAGS_ENABLED)) == ((a_fFlags) | RTLOGGRPFLAGS_ENABLED)) \
+           LogRelIt_pLogger->pfnLogger fmtargs; \
+       } \
+       LogIt(a_fFlags, a_iGroup, fmtargs); \
+  } while (0)
+#  define LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, fmtargs) \
+   do \
+   { \
+       PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+       if (LogRelIt_pLogger) \
+       { \
+           static uint32_t s_LogRelMaxIt_cLogged = 0; \
+           if (s_LogRelMaxIt_cLogged < (a_cMax)) \
            { \
-               static uint32_t s_LogRelMaxIt_cLogged = 0; \
-               if (s_LogRelMaxIt_cLogged < (a_cMax)) \
-               { \
-                   s_LogRelMaxIt_cLogged++; \
-                   LogRelIt_pLogger->pfnLogger fmtargs; \
-               } \
+               s_LogRelMaxIt_cLogged++; \
+               LogRelIt_pLogger->pfnLogger fmtargs; \
            } \
        } \
-       LogIt(LOG_INSTANCE, a_fFlags, a_iGroup, fmtargs); \
+       LogIt(a_fFlags, a_iGroup, fmtargs); \
   } while (0)
 # endif
 #else   /* !RTLOG_REL_ENABLED */
-# define LogRelIt(a_pvInst, a_fFlags, a_iGroup, fmtargs)    do { } while (0)
-# define LogRelMaxIt(a_pvInst, a_fFlags, a_iGroup, fmtargs) do { } while (0)
+# define LogRelIt(a_fFlags, a_iGroup, fmtargs)              do { } while (0)
+# define LogRelItLikely(a_fFlags, a_iGroup, fmtargs)        do { } while (0)
+# define LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, fmtargs)   do { } while (0)
 # if defined(LOG_USE_C99)
 #  define _LogRelRemoveParentheseis(...)                    __VA_ARGS__
-#  define _LogRelIt(a_pvInst, a_fFlags, a_iGroup, ...)      do { } while (0)
-#  define _LogRelMaxIt(a_cMax, a_pvInst, a_fFlags, a_iGroup, ...) do { } while (0)
+#  define _LogRelIt(a_fFlags, a_iGroup, ...)                do { } while (0)
+#  define _LogRelItLikely(a_fFlags, a_iGroup, ...)          do { } while (0)
+#  define _LogRelMaxIt(a_cMax, a_fFlags, a_iGroup, ...)     do { } while (0)
 # endif
 #endif  /* !RTLOG_REL_ENABLED */
@@ -1093,35 +1112,35 @@
  * Level 1 logging.
  */
-#define LogRel(a)          LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
+#define LogRel(a)          LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
 
 /** @def LogRel2
  * Level 2 logging.
  */
-#define LogRel2(a)         LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_2,  LOG_GROUP, a)
+#define LogRel2(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_2,  LOG_GROUP, a)
 
 /** @def LogRel3
  * Level 3 logging.
  */
-#define LogRel3(a)         LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_3,  LOG_GROUP, a)
+#define LogRel3(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_3,  LOG_GROUP, a)
 
 /** @def LogRel4
  * Level 4 logging.
  */
-#define LogRel4(a)         LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_4,  LOG_GROUP, a)
+#define LogRel4(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_4,  LOG_GROUP, a)
 
 /** @def LogRel5
  * Level 5 logging.
  */
-#define LogRel5(a)         LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_5,  LOG_GROUP, a)
+#define LogRel5(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_5,  LOG_GROUP, a)
 
 /** @def LogRel6
  * Level 6 logging.
  */
-#define LogRel6(a)         LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
+#define LogRel6(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
 
 /** @def LogRelFlow
  * Logging of execution flow.
  */
-#define LogRelFlow(a)      LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
+#define LogRelFlow(a)      LogRelIt(RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
 
 /** @def LogRelFunc
@@ -1131,7 +1150,5 @@
 #ifdef LOG_USE_C99
 # define LogRelFunc(a) \
-    _LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-# define LogFunc(a) \
-           _LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogRelFunc(a) \
@@ -1145,5 +1162,5 @@
 #ifdef LOG_USE_C99
 # define LogRelThisFunc(a) \
-    _LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogRelThisFunc(a) \
@@ -1161,5 +1178,5 @@
 #ifdef LOG_USE_C99
 # define LogRelFlowFunc(a) \
-    _LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogRelIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogRelFlowFunc(a) \
@@ -1170,45 +1187,45 @@
  *  lelik logging.
  */
-#define LogRelLelik(a)     LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LELIK,    LOG_GROUP, a)
+#define LogRelLelik(a)              LogRelIt(RTLOGGRPFLAGS_LELIK,    LOG_GROUP, a)
 
 /** @def LogRelMichael
  * michael logging.
  */
-#define LogRelMichael(a)   LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_MICHAEL,  LOG_GROUP, a)
+#define LogRelMichael(a)            LogRelIt(RTLOGGRPFLAGS_MICHAEL,  LOG_GROUP, a)
 
 /** @def LogRelSunlover
  * sunlover logging.
  */
-#define LogRelSunlover(a)  LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_SUNLOVER, LOG_GROUP, a)
+#define LogRelSunlover(a)           LogRelIt(RTLOGGRPFLAGS_SUNLOVER, LOG_GROUP, a)
 
 /** @def LogRelAchim
  * Achim logging.
  */
-#define LogRelAchim(a)     LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_ACHIM,    LOG_GROUP, a)
+#define LogRelAchim(a)              LogRelIt(RTLOGGRPFLAGS_ACHIM,    LOG_GROUP, a)
 
 /** @def LogRelSander
  * Sander logging.
  */
-#define LogRelSander(a)    LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_SANDER,   LOG_GROUP, a)
+#define LogRelSander(a)             LogRelIt(RTLOGGRPFLAGS_SANDER,   LOG_GROUP, a)
 
 /** @def LogRelKlaus
  *  klaus logging.
  */
-#define LogRelKlaus(a)     LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_KLAUS,    LOG_GROUP, a)
+#define LogRelKlaus(a)              LogRelIt(RTLOGGRPFLAGS_KLAUS,    LOG_GROUP, a)
 
 /** @def LogRelFrank
  *  frank logging.
  */
-#define LogRelFrank(a)     LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_FRANK,    LOG_GROUP, a)
+#define LogRelFrank(a)              LogRelIt(RTLOGGRPFLAGS_FRANK,    LOG_GROUP, a)
 
 /** @def LogRelBird
  * bird logging.
  */
-#define LogRelBird(a)      LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_BIRD,     LOG_GROUP, a)
+#define LogRelBird(a)               LogRelIt(RTLOGGRPFLAGS_BIRD,     LOG_GROUP, a)
 
 /** @def LogRelNoName
  * NoName logging.
  */
-#define LogRelNoName(a)    LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_NONAME,   LOG_GROUP, a)
+#define LogRelNoName(a)             LogRelIt(RTLOGGRPFLAGS_NONAME,   LOG_GROUP, a)
 
 
@@ -1216,35 +1233,35 @@
  * Level 1 logging.
  */
-#define LogRelMax(a_cMax, a)        LogRelMaxIt(a_cMax, LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
+#define LogRelMax(a_cMax, a)        LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
 
 /** @def LogRelMax2
  * Level 2 logging.
  */
-#define LogRelMax2(a_cMax, a)       LogRelMaxIt(a_cMax, LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_2,  LOG_GROUP, a)
+#define LogRelMax2(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_2,  LOG_GROUP, a)
 
 /** @def LogRelMax3
  * Level 3 logging.
  */
-#define LogRelMax3(a_cMax, a)       LogRelMaxIt(a_cMax, LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_3,  LOG_GROUP, a)
+#define LogRelMax3(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_3,  LOG_GROUP, a)
 
 /** @def LogRelMax4
  * Level 4 logging.
  */
-#define LogRelMax4(a_cMax, a)       LogRelMaxIt(a_cMax, LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_4,  LOG_GROUP, a)
+#define LogRelMax4(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_4,  LOG_GROUP, a)
 
 /** @def LogRelMax5
  * Level 5 logging.
  */
-#define LogRelMax5(a_cMax, a)       LogRelMaxIt(a_cMax, LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_5,  LOG_GROUP, a)
+#define LogRelMax5(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_5,  LOG_GROUP, a)
 
 /** @def LogRelMax6
  * Level 6 logging.
  */
-#define LogRelMax6(a_cMax, a)       LogRelMaxIt(a_cMax, LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
+#define LogRelMax6(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
 
 /** @def LogRelFlow
  * Logging of execution flow.
  */
-#define LogRelMaxFlow(a_cMax, a)    LogRelMaxIt(a_cMax, LOG_REL_INSTANCE, RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
+#define LogRelMaxFlow(a_cMax, a)    LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
 
 /** @def LogRelMaxFunc
@@ -1254,8 +1271,8 @@
 #ifdef LOG_USE_C99
 # define LogRelMaxFunc(a_cMax, a) \
-    _LogRelMaxIt(a_cMax, LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", \
+    _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", \
                  __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 # define LogFuncMax(a_cMax, a) \
-    _LogItMax(a_cMax, LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", \
+    _LogItMax(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", \
               __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
@@ -1272,5 +1289,5 @@
 #ifdef LOG_USE_C99
 # define LogRelMaxThisFunc(a_cMax, a) \
-    _LogRelMaxIt(a_cMax, LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", \
+    _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", \
                  this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
@@ -1290,5 +1307,5 @@
 #ifdef LOG_USE_C99
 # define LogRelMaxFlowFunc(a_cMax, a) \
-    _LogRelMaxIt(a_cMax, LOG_REL_INSTANCE, RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", \
+    _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", \
                  __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
@@ -1301,41 +1318,41 @@
  * Checks whether the specified logging group is enabled or not.
  */
-#define LogRelIsItEnabled(a_pvInst, a_fFlags, a_iGroup) \
-    LogRelIsItEnabledInternal((a_pvInst), (unsigned)(a_iGroup), (unsigned)(a_fFlags))
+#define LogRelIsItEnabled(a_fFlags, a_iGroup) \
+    ( RTLogRelGetDefaultInstanceEx((uint32_t)(a_fFlags), (uint32_t)(a_iGroup)) != NULL )
 
 /** @def LogRelIsEnabled
  * Checks whether level 1 logging is enabled.
  */
-#define LogRelIsEnabled()      LogRelIsItEnabled(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP)
+#define LogRelIsEnabled()      LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP)
 
 /** @def LogRelIs2Enabled
  * Checks whether level 2 logging is enabled.
  */
-#define LogRelIs2Enabled()     LogRelIsItEnabled(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP)
+#define LogRelIs2Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP)
 
 /** @def LogRelIs3Enabled
  * Checks whether level 3 logging is enabled.
  */
-#define LogRelIs3Enabled()     LogRelIsItEnabled(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP)
+#define LogRelIs3Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP)
 
 /** @def LogRelIs4Enabled
  * Checks whether level 4 logging is enabled.
  */
-#define LogRelIs4Enabled()     LogRelIsItEnabled(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP)
+#define LogRelIs4Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP)
 
 /** @def LogRelIs5Enabled
  * Checks whether level 5 logging is enabled.
  */
-#define LogRelIs5Enabled()     LogRelIsItEnabled(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP)
+#define LogRelIs5Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP)
 
 /** @def LogRelIs6Enabled
  * Checks whether level 6 logging is enabled.
  */
-#define LogRelIs6Enabled()     LogRelIsItEnabled(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP)
+#define LogRelIs6Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP)
 
 /** @def LogRelIsFlowEnabled
  * Checks whether execution flow logging is enabled.
  */
-#define LogRelIsFlowEnabled()  LogRelIsItEnabled(LOG_REL_INSTANCE, RTLOGGRPFLAGS_FLOW, LOG_GROUP)
+#define LogRelIsFlowEnabled()  LogRelIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP)
 
 
@@ -1353,24 +1370,16 @@
  * Gets the default release logger instance.
  *
- * @returns Pointer to default release logger instance.
- * @returns NULL if no default release logger instance available.
- */
-RTDECL(PRTLOGGER) RTLogRelDefaultInstance(void);
-
-/** Internal worker function.
- * Don't call directly, use the LogRelIsItEnabled macro!
- */
-DECLINLINE(bool) LogRelIsItEnabledInternal(void *pvInst, unsigned iGroup, unsigned fFlags)
-{
-    register PRTLOGGER pLogger = (PRTLOGGER)pvInst ? (PRTLOGGER)pvInst : RTLogRelDefaultInstance();
-    if (   pLogger
-        && !(pLogger->fFlags & RTLOGFLAGS_DISABLED))
-    {
-        register unsigned fGrpFlags = pLogger->afGroups[(unsigned)iGroup < pLogger->cGroups ? (unsigned)iGroup : 0];
-        if ((fGrpFlags & (fFlags | RTLOGGRPFLAGS_ENABLED)) == (fFlags | RTLOGGRPFLAGS_ENABLED))
-            return true;
-    }
-    return false;
-}
+ * @returns Pointer to default release logger instance if availble, otherwise NULL.
+ */
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(void);
+
+/**
+ * Gets the default release logger instance.
+ *
+ * @returns Pointer to default release logger instance if availble, otherwise NULL.
+ * @param   fFlags      The logging group flags required.
+ * @param   iGroup      The group.
+ */
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup);
 
 /**
@@ -1539,5 +1548,5 @@
 # if defined(LOG_USE_C99)
 #  undef _LogIt
-#  define _LogIt(a_pvInst, a_fFlags, a_iGroup, ...)  LogBackdoor((__VA_ARGS__))
+#  define _LogIt(a_fFlags, a_iGroup, ...)  LogBackdoor((__VA_ARGS__))
 # endif
 #endif
@@ -1550,16 +1559,34 @@
  * Gets the default logger instance, creating it if necessary.
  *
- * @returns Pointer to default logger instance.
- * @returns NULL if no default logger instance available.
+ * @returns Pointer to default logger instance if availble, otherwise NULL.
  */
 RTDECL(PRTLOGGER)   RTLogDefaultInstance(void);
 
 /**
+ * Gets the logger instance if enabled, creating it if necessary.
+ *
+ * @returns Pointer to default logger instance, if group has the specified
+ *          flags enabled.  Otherwise NULL is returned.
+ * @param   fFlags      The logging group flags required.
+ * @param   iGroup      The group.
+ */
+RTDECL(PRTLOGGER)   RTLogDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup);
+
+/**
  * Gets the default logger instance.
  *
- * @returns Pointer to default logger instance.
- * @returns NULL if no default logger instance available.
+ * @returns Pointer to default logger instance if availble, otherwise NULL.
  */
 RTDECL(PRTLOGGER)   RTLogGetDefaultInstance(void);
+
+/**
+ * Gets the default logger instance if enabled.
+ *
+ * @returns Pointer to default logger instance, if group has the specified
+ *          flags enabled.  Otherwise NULL is returned.
+ * @param   fFlags      The logging group flags required.
+ * @param   iGroup      The group.
+ */
+RTDECL(PRTLOGGER)   RTLogGetDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup);
 
 #ifndef IN_RC
@@ -1570,5 +1597,5 @@
  * @param   pLogger     The new default logger instance.
  */
-RTDECL(PRTLOGGER) RTLogSetDefaultInstance(PRTLOGGER pLogger);
+RTDECL(PRTLOGGER)   RTLogSetDefaultInstance(PRTLOGGER pLogger);
 #endif /* !IN_RC */
 
@@ -1584,5 +1611,5 @@
  *                      current thread use 0.
  */
-RTDECL(int) RTLogSetDefaultInstanceThread(PRTLOGGER pLogger, uintptr_t uKey);
+RTDECL(int)         RTLogSetDefaultInstanceThread(PRTLOGGER pLogger, uintptr_t uKey);
 #endif /* IN_RING0 */
 
@@ -1592,7 +1619,7 @@
  * Don't call directly, use the LogIsItEnabled macro!
  */
-DECLINLINE(bool) LogIsItEnabledInternal(void *pvInst, unsigned iGroup, unsigned fFlags)
+DECLINLINE(bool)    LogIsItEnabledInternal(unsigned iGroup, unsigned fFlags)
 {
-    register PRTLOGGER pLogger = (PRTLOGGER)pvInst ? (PRTLOGGER)pvInst : RTLogDefaultInstance();
+    register PRTLOGGER pLogger = RTLogDefaultInstance();
     if (   pLogger
         && !(pLogger->fFlags & RTLOGFLAGS_DISABLED))
Index: /trunk/include/iprt/mangling.h
===================================================================
--- /trunk/include/iprt/mangling.h	(revision 55979)
+++ /trunk/include/iprt/mangling.h	(revision 55980)
@@ -804,4 +804,5 @@
 # define RTLogDefaultInit                               RT_MANGLER(RTLogDefaultInit)
 # define RTLogDefaultInstance                           RT_MANGLER(RTLogDefaultInstance)
+# define RTLogDefaultInstanceEx                         RT_MANGLER(RTLogDefaultInstanceEx)
 # define RTLogDestinations                              RT_MANGLER(RTLogDestinations)
 # define RTLogDestroy                                   RT_MANGLER(RTLogDestroy)
@@ -813,4 +814,5 @@
 # define RTLogFormatV                                   RT_MANGLER(RTLogFormatV)
 # define RTLogGetDefaultInstance                        RT_MANGLER(RTLogGetDefaultInstance)
+# define RTLogGetDefaultInstanceEx                      RT_MANGLER(RTLogGetDefaultInstanceEx)
 # define RTLogGetDestinations                           RT_MANGLER(RTLogGetDestinations)
 # define RTLogGetFlags                                  RT_MANGLER(RTLogGetFlags)
@@ -824,5 +826,6 @@
 # define RTLogPrintfV                                   RT_MANGLER(RTLogPrintfV)
 # define RTLogDumpPrintfV                               RT_MANGLER(RTLogDumpPrintfV)
-# define RTLogRelDefaultInstance                        RT_MANGLER(RTLogRelDefaultInstance)
+# define RTLogRelGetDefaultInstance                     RT_MANGLER(RTLogRelGetDefaultInstance)
+# define RTLogRelGetDefaultInstanceEx                   RT_MANGLER(RTLogRelGetDefaultInstanceEx)
 # define RTLogRelLogger                                 RT_MANGLER(RTLogRelLogger)
 # define RTLogRelLoggerV                                RT_MANGLER(RTLogRelLoggerV)
Index: /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku-stubs.c
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku-stubs.c	(revision 55979)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku-stubs.c	(revision 55980)
@@ -331,7 +331,15 @@
     return g_VBoxGuest->_RTLogDefaultInstance();
 }
-RTDECL(PRTLOGGER) RTLogRelDefaultInstance(void)
-{
-    return g_VBoxGuest->_RTLogRelDefaultInstance();
+RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+{
+    return g_VBoxGuest->_RTLogDefaultInstanceEx(fFlags, iGroup);
+}
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(void)
+{
+    return g_VBoxGuest->_RTLogRelGetDefaultInstance();
+}
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(uint32_t fFlags, uint32_t iGroup)
+{
+    return g_VBoxGuest->_RTLogRelGetDefaultInstanceEx(fFlags, iGroup);
 }
 RTDECL(int) RTErrConvertToErrno(int iErr)
Index: /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.c
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.c	(revision 55979)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.c	(revision 55980)
@@ -177,5 +177,7 @@
     RTMemTmpFree,
     RTLogDefaultInstance,
-    RTLogRelDefaultInstance,
+    RTLogDefaultInstanceEx,
+    RTLogRelGetDefaultInstance,
+    RTLogRelGetDefaultInstanceEx,
     RTErrConvertToErrno,
     VbgdCommonIoCtl,
Index: /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.h
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.h	(revision 55979)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.h	(revision 55980)
@@ -180,5 +180,7 @@
     void (*_RTMemTmpFree)(void *pv);
     PRTLOGGER(*_RTLogDefaultInstance)(void);
-    PRTLOGGER(*_RTLogRelDefaultInstance)(void);
+    PRTLOGGER(*_RTLogDefaultInstanceEx)(uint32_t fFlags, uint32_t iGroup);
+    PRTLOGGER(*_RTLogRelGetDefaultInstance)(void);
+    PRTLOGGER(*_RTLogRelGetDefaultInstanceEx)(uint32_t fFlags, uint32_t iGroup);
     int (*_RTErrConvertToErrno)(int iErr);
     int (*_VbgdCommonIoCtl)(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession,
Index: /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c	(revision 55979)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c	(revision 55980)
@@ -957,5 +957,5 @@
     if (g_fLoggerCreated)
     {
-        PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelDefaultInstance();
+        PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance();
         if (pLogger)
             RTLogGroupSettings(pLogger, pszValue);
@@ -970,5 +970,5 @@
 static int vboxguestLinuxParamLogGrpGet(char *pszBuf, struct kernel_param *pParam)
 {
-    PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelDefaultInstance();
+    PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance();
     *pszBuf = '\0';
     if (pLogger)
@@ -983,5 +983,5 @@
     if (g_fLoggerCreated)
     {
-        PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelDefaultInstance();
+        PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance();
         if (pLogger)
             RTLogFlags(pLogger, pszValue);
@@ -995,5 +995,5 @@
 static int vboxguestLinuxParamLogFlagsGet(char *pszBuf, struct kernel_param *pParam)
 {
-    PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelDefaultInstance();
+    PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance();
     *pszBuf = '\0';
     if (pLogger)
@@ -1008,5 +1008,5 @@
     if (g_fLoggerCreated)
     {
-        PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelDefaultInstance();
+        PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance();
         if (pLogger)
             RTLogDestinations(pLogger, pszValue);
@@ -1020,5 +1020,5 @@
 static int vboxguestLinuxParamLogDstGet(char *pszBuf, struct kernel_param *pParam)
 {
-    PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelDefaultInstance();
+    PRTLOGGER pLogger = pParam->name[0] == 'd' ? RTLogDefaultInstance() : RTLogRelGetDefaultInstance();
     *pszBuf = '\0';
     if (pLogger)
Index: /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibRuntimeXF86.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibRuntimeXF86.cpp	(revision 55979)
+++ /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibRuntimeXF86.cpp	(revision 55980)
@@ -65,6 +65,12 @@
 }
 
-RTDECL(PRTLOGGER) RTLogRelDefaultInstance(void)
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(void)
 {
+    return NULL;
+}
+
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+{
+    NOREF(fFlags); NOREF(iGroup);
     return NULL;
 }
Index: /trunk/src/VBox/Additions/solaris/DRM/vboxvideo_drm.c
===================================================================
--- /trunk/src/VBox/Additions/solaris/DRM/vboxvideo_drm.c	(revision 55979)
+++ /trunk/src/VBox/Additions/solaris/DRM/vboxvideo_drm.c	(revision 55980)
@@ -29,7 +29,4 @@
 *   Header Files                                                               *
 *******************************************************************************/
-#ifdef DEBUG_ramshankar
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #undef offsetof     /* This gets redefined in drmP.h */
 #include "include/drmP.h"
Index: /trunk/src/VBox/Additions/solaris/Virtio/Virtio-solaris.c
===================================================================
--- /trunk/src/VBox/Additions/solaris/Virtio/Virtio-solaris.c	(revision 55979)
+++ /trunk/src/VBox/Additions/solaris/Virtio/Virtio-solaris.c	(revision 55980)
@@ -28,7 +28,4 @@
 *   Header Files                                                               *
 *******************************************************************************/
-#ifdef DEBUG_ramshankar
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include "Virtio-solaris.h"
 
Index: /trunk/src/VBox/Additions/solaris/Virtio/VirtioNet-solaris.c
===================================================================
--- /trunk/src/VBox/Additions/solaris/Virtio/VirtioNet-solaris.c	(revision 55979)
+++ /trunk/src/VBox/Additions/solaris/Virtio/VirtioNet-solaris.c	(revision 55980)
@@ -28,7 +28,4 @@
 *   Header Files                                                               *
 *******************************************************************************/
-#ifdef DEBUG_ramshankar
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include "Virtio-solaris.h"
 #include "VirtioPci-solaris.h"
Index: /trunk/src/VBox/Additions/solaris/Virtio/VirtioPci-solaris.c
===================================================================
--- /trunk/src/VBox/Additions/solaris/Virtio/VirtioPci-solaris.c	(revision 55979)
+++ /trunk/src/VBox/Additions/solaris/Virtio/VirtioPci-solaris.c	(revision 55980)
@@ -28,7 +28,4 @@
 *   Header Files                                                               *
 *******************************************************************************/
-#ifdef DEBUG_ramshankar
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include "VirtioPci-solaris.h"
 
Index: /trunk/src/VBox/Additions/solaris/Virtio/VirtioRing-solaris.c
===================================================================
--- /trunk/src/VBox/Additions/solaris/Virtio/VirtioRing-solaris.c	(revision 55979)
+++ /trunk/src/VBox/Additions/solaris/Virtio/VirtioRing-solaris.c	(revision 55980)
@@ -28,7 +28,4 @@
 *   Header Files                                                               *
 *******************************************************************************/
-#ifdef DEBUG_ramshankar
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include "Virtio-solaris.h"
 
Index: /trunk/src/VBox/Additions/x11/VBoxClient/main.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/main.cpp	(revision 55979)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/main.cpp	(revision 55980)
@@ -301,6 +301,5 @@
             /* If the user is running in "no daemon" mode anyway, send critical
              * logging to stdout as well. */
-            PRTLOGGER pReleaseLog = RTLogRelDefaultInstance();
-
+            PRTLOGGER pReleaseLog = RTLogRelGetDefaultInstance();
             if (pReleaseLog)
                 rc = RTLogDestinations(pReleaseLog, "stdout");
Index: /trunk/src/VBox/Debugger/DBGCCommands.cpp
===================================================================
--- /trunk/src/VBox/Debugger/DBGCCommands.cpp	(revision 55979)
+++ /trunk/src/VBox/Debugger/DBGCCommands.cpp	(revision 55980)
@@ -1218,5 +1218,5 @@
 {
     RTLogFlush(NULL);
-    PRTLOGGER pLogRel = RTLogRelDefaultInstance();
+    PRTLOGGER pLogRel = RTLogRelGetDefaultInstance();
     if (pLogRel)
         RTLogFlush(pLogRel);
Index: /trunk/src/VBox/Devices/Network/DevE1000.cpp
===================================================================
--- /trunk/src/VBox/Devices/Network/DevE1000.cpp	(revision 55979)
+++ /trunk/src/VBox/Devices/Network/DevE1000.cpp	(revision 55980)
@@ -173,5 +173,5 @@
 #  define E1kLog2(a)              Log2(a)
 #  define E1kLog3(a)              Log3(a)
-#  define E1kLogX(x, a)           LogIt(LOG_INSTANCE, x, LOG_GROUP, a)
+#  define E1kLogX(x, a)           LogIt(x, LOG_GROUP, a)
 //#  define E1kLog(a)               do {} while (0)
 //#  define E1kLog2(a)              do {} while (0)
Index: /trunk/src/VBox/Devices/Network/lwip-new/vbox/include/lwip-log.h
===================================================================
--- /trunk/src/VBox/Devices/Network/lwip-new/vbox/include/lwip-log.h	(revision 55979)
+++ /trunk/src/VBox/Devices/Network/lwip-new/vbox/include/lwip-log.h	(revision 55980)
@@ -73,18 +73,17 @@
 #ifdef LOG_ENABLED
 
-#define LWIP_DEBUGF(_when, _args)                                       \
-    do {                                                                \
+# define LWIP_DEBUGF(_when, _args) \
+    do { \
         const VBOX_LOGGROUP _group = (_when) >> LWIP_DEBUGF_LOG_GROUP_SHIFT; \
-        if (_group >= LOG_GROUP_DEFAULT) {                              \
+        if (_group >= LOG_GROUP_DEFAULT) { \
             /* severe => l1; serious => l2; warning => l3; default => l4 */ \
-            const unsigned int _level =                                 \
-                1 << (LWIP_DBG_MASK_LEVEL+1 - ((_when) & LWIP_DBG_MASK_LEVEL)); \
-            LogIt(LOG_INSTANCE, _level, _group, _args);                 \
-        }                                                               \
+            const unsigned int _level = 1U << (LWIP_DBG_MASK_LEVEL + 1 - ((_when) & LWIP_DBG_MASK_LEVEL)); \
+            LogIt(_level, _group, _args);  \
+        } \
     } while (0)
 
 #else  /* !LOG_ENABLED */
 
-#define LWIP_DEBUGF(_when, _args) do { } while (0)
+# define LWIP_DEBUGF(_when, _args) do { } while (0)
 
 #endif /* !LOG_ENABLED */
Index: /trunk/src/VBox/Devices/USB/solaris/USBProxyDevice-solaris.cpp
===================================================================
--- /trunk/src/VBox/Devices/USB/solaris/USBProxyDevice-solaris.cpp	(revision 55979)
+++ /trunk/src/VBox/Devices/USB/solaris/USBProxyDevice-solaris.cpp	(revision 55980)
@@ -21,7 +21,4 @@
 *******************************************************************************/
 #define LOG_GROUP LOG_GROUP_DRV_USBPROXY
-#ifdef DEBUG_ramshankar
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include <sys/poll.h>
 #include <errno.h>
Index: /trunk/src/VBox/Devices/VMMDev/VMMDev.cpp
===================================================================
--- /trunk/src/VBox/Devices/VMMDev/VMMDev.cpp	(revision 55979)
+++ /trunk/src/VBox/Devices/VMMDev/VMMDev.cpp	(revision 55980)
@@ -2177,5 +2177,5 @@
                     ("not null terminated\n"), VERR_INVALID_PARAMETER);
 
-    LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP_DEV_VMM_BACKDOOR, ("DEBUG LOG: %s", pReq->szString));
+    LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP_DEV_VMM_BACKDOOR, ("DEBUG LOG: %s", pReq->szString));
     return VINF_SUCCESS;
 }
@@ -2866,8 +2866,8 @@
         switch (u32)
         {
-            case '\r': LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP_DEV_VMM_BACKDOOR, ("vmmdev: <return>\n")); break;
-            case '\n': LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP_DEV_VMM_BACKDOOR, ("vmmdev: <newline>\n")); break;
-            case '\t': LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP_DEV_VMM_BACKDOOR, ("vmmdev: <tab>\n")); break;
-            default:   LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP_DEV_VMM_BACKDOOR, ("vmmdev: %c (%02x)\n", u32, u32)); break;
+            case '\r': LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP_DEV_VMM_BACKDOOR, ("vmmdev: <return>\n")); break;
+            case '\n': LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP_DEV_VMM_BACKDOOR, ("vmmdev: <newline>\n")); break;
+            case '\t': LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP_DEV_VMM_BACKDOOR, ("vmmdev: <tab>\n")); break;
+            default:   LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP_DEV_VMM_BACKDOOR, ("vmmdev: %c (%02x)\n", u32, u32)); break;
         }
 
@@ -2877,5 +2877,5 @@
             pThis->szMsg[pThis->iMsg] = '\0';
             if (pThis->iMsg)
-                LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP_DEV_VMM_BACKDOOR, ("VMMDev: Guest Log: %s\n", pThis->szMsg));
+                LogRelIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP_DEV_VMM_BACKDOOR, ("VMMDev: Guest Log: %s\n", pThis->szMsg));
             pThis->iMsg = 0;
         }
@@ -2885,5 +2885,5 @@
             {
                 pThis->szMsg[pThis->iMsg] = '\0';
-                LogRelIt(LOG_REL_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP_DEV_VMM_BACKDOOR, ("VMMDev: Guest Log: %s\n", pThis->szMsg));
+                LogRelIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP_DEV_VMM_BACKDOOR, ("VMMDev: Guest Log: %s\n", pThis->szMsg));
                 pThis->iMsg = 0;
             }
Index: /trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp	(revision 55979)
+++ /trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp	(revision 55980)
@@ -228,8 +228,12 @@
     { "RTHandleTableLookupWithCtx",             (void *)RTHandleTableLookupWithCtx },
     { "RTLogDefaultInstance",                   (void *)RTLogDefaultInstance },
+    { "RTLogDefaultInstanceEx",                 (void *)RTLogDefaultInstanceEx },
     { "RTLogGetDefaultInstance",                (void *)RTLogGetDefaultInstance },
+    { "RTLogGetDefaultInstanceEx",              (void *)RTLogGetDefaultInstanceEx },
     { "RTLogLoggerExV",                         (void *)RTLogLoggerExV },
     { "RTLogPrintfV",                           (void *)RTLogPrintfV },
-    { "RTLogRelDefaultInstance",                (void *)RTLogRelDefaultInstance },
+    { "RTLogRelDefaultInstance",                (void *)RTLogRelGetDefaultInstance },
+    { "RTLogRelGetDefaultInstance",             (void *)RTLogRelGetDefaultInstance },
+    { "RTLogRelGetDefaultInstanceEx",           (void *)RTLogRelGetDefaultInstanceEx },
     { "RTLogSetDefaultInstanceThread",          (void *)RTLogSetDefaultInstanceThread },
     { "RTMemAllocExTag",                        (void *)RTMemAllocExTag },
@@ -5328,5 +5332,5 @@
 
         case SUPLOGGERSETTINGS_WHICH_RELEASE:
-            pLogger = RTLogRelDefaultInstance();
+            pLogger = RTLogRelGetDefaultInstance();
             break;
 
Index: /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h	(revision 55979)
+++ /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h	(revision 55980)
@@ -213,7 +213,7 @@
  *
  * @todo Pending work on next major version change:
- *          - (nothing)
- */
-#define SUPDRV_IOC_VERSION                              0x00220000
+ *          - Remove RTLogRelDefaultInstance export from SUPDrv.cpp.
+ */
+#define SUPDRV_IOC_VERSION                              0x00220001
 
 /** SUP_IOCTL_COOKIE. */
Index: /trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPLib.cpp	(revision 55979)
+++ /trunk/src/VBox/HostDrivers/Support/SUPLib.cpp	(revision 55980)
@@ -280,5 +280,5 @@
         CookieReq.u.In.u32ReqVersion = SUPDRV_IOC_VERSION;
         const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00200000
-                                   ? 0x00200000
+                                   ? 0x00200001
                                    : SUPDRV_IOC_VERSION & 0xffff0000;
         CookieReq.u.In.u32MinVersion = uMinVersion;
@@ -493,5 +493,5 @@
         { "RTTimerCanDoHighResolution",             0xefef003a },
         { "RTLogDefaultInstance",                   0xefef003b },
-        { "RTLogRelDefaultInstance",                0xefef003c },
+        { "RTLogRelGetDefaultInstance",             0xefef003c },
         { "RTLogSetDefaultInstanceThread",          0xefef003d },
         { "RTLogLogger",                            0xefef003e },
Index: /trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c	(revision 55979)
+++ /trunk/src/VBox/HostDrivers/Support/solaris/SUPDrv-solaris.c	(revision 55980)
@@ -29,8 +29,4 @@
 *******************************************************************************/
 #define LOG_GROUP LOG_GROUP_SUP_DRV
-#ifdef DEBUG_ramshankar
-# define LOG_ENABLED
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include <sys/types.h>
 #include <sys/param.h>
Index: /trunk/src/VBox/HostDrivers/VBoxNetAdp/solaris/VBoxNetAdp-solaris.c
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetAdp/solaris/VBoxNetAdp-solaris.c	(revision 55979)
+++ /trunk/src/VBox/HostDrivers/VBoxNetAdp/solaris/VBoxNetAdp-solaris.c	(revision 55980)
@@ -29,8 +29,4 @@
 *******************************************************************************/
 #define LOG_GROUP LOG_GROUP_NET_ADP_DRV
-#ifdef DEBUG_ramshankar
-# define LOG_ENABLED
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include <VBox/log.h>
 #include <VBox/err.h>
Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFlt-solaris.c
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFlt-solaris.c	(revision 55979)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFlt-solaris.c	(revision 55980)
@@ -29,8 +29,4 @@
 *******************************************************************************/
 #define LOG_GROUP LOG_GROUP_NET_FLT_DRV
-#ifdef DEBUG_ramshankar
-# define LOG_ENABLED
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include <VBox/log.h>
 #include <VBox/err.h>
Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFltBow-solaris.c
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFltBow-solaris.c	(revision 55979)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFltBow-solaris.c	(revision 55980)
@@ -29,8 +29,4 @@
 *******************************************************************************/
 #define LOG_GROUP LOG_GROUP_NET_FLT_DRV
-#ifdef DEBUG_ramshankar
-# define LOG_ENABLED
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include <VBox/log.h>
 #include <VBox/err.h>
Index: /trunk/src/VBox/HostDrivers/VBoxUSB/solaris/USBLib-solaris.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxUSB/solaris/USBLib-solaris.cpp	(revision 55979)
+++ /trunk/src/VBox/HostDrivers/VBoxUSB/solaris/USBLib-solaris.cpp	(revision 55980)
@@ -20,7 +20,4 @@
 *   Header Files                                                               *
 *******************************************************************************/
-#ifdef DEBUG_ramshankar
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include <VBox/usblib.h>
 #include <VBox/err.h>
Index: /trunk/src/VBox/HostDrivers/VBoxUSB/solaris/VBoxUSB-solaris.c
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxUSB/solaris/VBoxUSB-solaris.c	(revision 55979)
+++ /trunk/src/VBox/HostDrivers/VBoxUSB/solaris/VBoxUSB-solaris.c	(revision 55980)
@@ -29,8 +29,4 @@
 *******************************************************************************/
 #define LOG_GROUP LOG_GROUP_USB_DRV
-#ifdef DEBUG_ramshankar
-# define LOG_ENABLED
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include <VBox/version.h>
 #include <VBox/log.h>
Index: /trunk/src/VBox/HostDrivers/VBoxUSB/solaris/VBoxUSBMon-solaris.c
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxUSB/solaris/VBoxUSBMon-solaris.c	(revision 55979)
+++ /trunk/src/VBox/HostDrivers/VBoxUSB/solaris/VBoxUSBMon-solaris.c	(revision 55980)
@@ -29,8 +29,4 @@
 *******************************************************************************/
 #define LOG_GROUP  LOG_GROUP_USB_DRV
-#ifdef DEBUG_ramshankar
-# define LOG_ENABLED
-# define LOG_INSTANCE       RTLogRelDefaultInstance()
-#endif
 #include "VBoxUSBFilterMgr.h"
 #include <VBox/usblib-solaris.h>
Index: /trunk/src/VBox/Main/src-all/Logging.cpp
===================================================================
--- /trunk/src/VBox/Main/src-all/Logging.cpp	(revision 55979)
+++ /trunk/src/VBox/Main/src-all/Logging.cpp	(revision 55980)
@@ -1,5 +1,4 @@
 /* $Id$ */
 /** @file
- *
  * VirtualBox Main Logging
  */
@@ -19,6 +18,6 @@
 
 /*
- *  Main now always uses the default LOG_INSTANCE for logging,
- *  so nothing to do here for now.
+ *  Main now always uses the defaults for logging, so nothing to do
+ *  here for now.
  */
 /* vi: set tabstop=4 shiftwidth=4 expandtab: */
Index: /trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp	(revision 55979)
+++ /trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp	(revision 55980)
@@ -529,6 +529,5 @@
 HRESULT MachineDebugger::getLogRelFlags(com::Utf8Str &aLogRelFlags)
 {
-    HRESULT hrc = i_logStringProps(RTLogRelDefaultInstance(), RTLogGetFlags, "RTGetFlags", aLogRelFlags);
-
+    HRESULT hrc = i_logStringProps(RTLogRelGetDefaultInstance(), RTLogGetFlags, "RTGetFlags", aLogRelFlags);
     return hrc;
 }
@@ -536,6 +535,5 @@
 HRESULT MachineDebugger::getLogRelGroups(com::Utf8Str &aLogRelGroups)
 {
-    HRESULT hrc = i_logStringProps(RTLogRelDefaultInstance(), RTLogGetGroupSettings, "RTLogGetGroupSettings", aLogRelGroups);
-
+    HRESULT hrc = i_logStringProps(RTLogRelGetDefaultInstance(), RTLogGetGroupSettings, "RTLogGetGroupSettings", aLogRelGroups);
     return hrc;
 }
@@ -543,6 +541,5 @@
 HRESULT MachineDebugger::getLogRelDestinations(com::Utf8Str &aLogRelDestinations)
 {
-    HRESULT hrc = i_logStringProps(RTLogRelDefaultInstance(), RTLogGetDestinations, "RTLogGetDestinations", aLogRelDestinations);
-
+    HRESULT hrc = i_logStringProps(RTLogRelGetDefaultInstance(), RTLogGetDestinations, "RTLogGetDestinations", aLogRelDestinations);
     return hrc;
 }
Index: /trunk/src/VBox/Main/src-server/SystemPropertiesImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/SystemPropertiesImpl.cpp	(revision 55979)
+++ /trunk/src/VBox/Main/src-server/SystemPropertiesImpl.cpp	(revision 55980)
@@ -1183,5 +1183,5 @@
     if (useLoggingLevel.isEmpty())
         useLoggingLevel = VBOXSVC_LOG_DEFAULT;
-    int rc = RTLogGroupSettings(RTLogRelDefaultInstance(), useLoggingLevel.c_str());
+    int rc = RTLogGroupSettings(RTLogRelGetDefaultInstance(), useLoggingLevel.c_str());
     //  If failed and not the default logging level - try to use the default logging level.
     if (RT_FAILURE(rc))
@@ -1192,5 +1192,5 @@
         if (!useLoggingLevel.equals(VBOXSVC_LOG_DEFAULT))
         {
-            rc = RTLogGroupSettings(RTLogRelDefaultInstance(), VBOXSVC_LOG_DEFAULT);
+            rc = RTLogGroupSettings(RTLogRelGetDefaultInstance(), VBOXSVC_LOG_DEFAULT);
             // If failed report this to the release log.
             if (RT_FAILURE(rc))
Index: /trunk/src/VBox/Main/src-server/win/svcmain.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/win/svcmain.cpp	(revision 55979)
+++ /trunk/src/VBox/Main/src-server/win/svcmain.cpp	(revision 55980)
@@ -99,5 +99,5 @@
              * running at this point which would rotate the logs concurrently,
              * creating a mess. */
-            PRTLOGGER pReleaseLogger = RTLogRelDefaultInstance();
+            PRTLOGGER pReleaseLogger = RTLogRelGetDefaultInstance();
             if (pReleaseLogger)
             {
Index: /trunk/src/VBox/Runtime/VBox/VBoxRTImp.def
===================================================================
--- /trunk/src/VBox/Runtime/VBox/VBoxRTImp.def	(revision 55979)
+++ /trunk/src/VBox/Runtime/VBox/VBoxRTImp.def	(revision 55980)
@@ -610,4 +610,5 @@
     RTLogDefaultInit
     RTLogDefaultInstance
+    RTLogDefaultInstanceEx
     RTLogDestinations
     RTLogDestroy
@@ -618,4 +619,5 @@
     RTLogFormatV
     RTLogGetDefaultInstance
+    RTLogGetDefaultInstanceEx
     RTLogGetDestinations
     RTLogGetFlags
@@ -628,5 +630,6 @@
     RTLogPrintf
     RTLogPrintfV
-    RTLogRelDefaultInstance
+    RTLogRelGetDefaultInstance
+    RTLogRelGetDefaultInstanceEx
     RTLogRelLogger
     RTLogRelLoggerV
Index: /trunk/src/VBox/Runtime/VBox/logbackdoor-redirect.cpp
===================================================================
--- /trunk/src/VBox/Runtime/VBox/logbackdoor-redirect.cpp	(revision 55979)
+++ /trunk/src/VBox/Runtime/VBox/logbackdoor-redirect.cpp	(revision 55980)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2007-2011 Oracle Corporation
+ * Copyright (C) 2007-2015 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -27,4 +27,5 @@
  */
 
+
 /*******************************************************************************
 *   Header Files                                                               *
@@ -36,5 +37,12 @@
 
 /* All release logging goes to the backdoor logger anyway. */
-RTDECL(PRTLOGGER) RTLogRelDefaultInstance(void)
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(void)
+{
+    return NULL;
+}
+
+
+/* All release logging goes to the backdoor logger anyway. */
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
 {
     return NULL;
@@ -48,4 +56,12 @@
 }
 
+
+/* All logging goes to the backdoor logger anyway. */
+RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+{
+    return NULL;
+}
+
+
 /* All logging goes to the backdoor logger anyway. */
 RTDECL(PRTLOGGER) RTLogRelSetDefaultInstance(PRTLOGGER pLogger)
@@ -53,4 +69,5 @@
     return NULL;
 }
+
 
 RTDECL(void) RTLogRelPrintf(const char *pszFormat, ...)
@@ -108,2 +125,3 @@
     return VERR_NOT_IMPLEMENTED;
 }
+
Index: /trunk/src/VBox/Runtime/common/log/log.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/log/log.cpp	(revision 55979)
+++ /trunk/src/VBox/Runtime/common/log/log.cpp	(revision 55980)
@@ -2576,10 +2576,7 @@
 
 /**
- * Gets the default logger instance, creating it if necessary.
- *
- * @returns Pointer to default logger instance.
- * @returns NULL if no default logger instance available.
- */
-RTDECL(PRTLOGGER)   RTLogDefaultInstance(void)
+ * Common worker for RTLogDefaultInstance and RTLogDefaultInstanceEx.
+ */
+DECL_FORCE_INLINE(PRTLOGGER) rtLogDefaultInstanceCommon(void)
 {
 #ifdef IN_RC
@@ -2609,14 +2606,34 @@
 #endif /* !IN_RC */
 }
+
+
+RTDECL(PRTLOGGER)   RTLogDefaultInstance(void)
+{
+    return rtLogDefaultInstanceCommon();
+}
 RT_EXPORT_SYMBOL(RTLogDefaultInstance);
 
 
-/**
- * Gets the default logger instance.
- *
- * @returns Pointer to default logger instance.
- * @returns NULL if no default logger instance available.
- */
-RTDECL(PRTLOGGER)   RTLogGetDefaultInstance(void)
+RTDECL(PRTLOGGER)   RTLogDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+{
+    PRTLOGGER pLogger = rtLogDefaultInstanceCommon();
+    if (pLogger)
+    {
+        if (pLogger->fFlags & RTLOGFLAGS_DISABLED)
+            pLogger = NULL;
+        else if (   iGroup != UINT32_MAX
+                 && (   (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED))
+                     != (fFlags | RTLOGGRPFLAGS_ENABLED)))
+            pLogger = NULL;
+    }
+    return pLogger;
+}
+RT_EXPORT_SYMBOL(RTLogDefaultInstanceEx);
+
+
+/**
+ * Common worker for RTLogGetDefaultInstance and RTLogGetDefaultInstanceEx.
+ */
+DECL_FORCE_INLINE(PRTLOGGER) rtLogGetDefaultInstanceCommon(void)
 {
 #ifdef IN_RC
@@ -2640,5 +2657,28 @@
 #endif
 }
+
+
+RTDECL(PRTLOGGER) RTLogGetDefaultInstance(void)
+{
+    return rtLogGetDefaultInstanceCommon();
+}
 RT_EXPORT_SYMBOL(RTLogGetDefaultInstance);
+
+
+RTDECL(PRTLOGGER) RTLogGetDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+{
+    PRTLOGGER pLogger = rtLogGetDefaultInstanceCommon();
+    if (pLogger)
+    {
+        if (pLogger->fFlags & RTLOGFLAGS_DISABLED)
+            pLogger = NULL;
+        else if (   iGroup != UINT32_MAX
+                 && (   (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED))
+                     != (fFlags | RTLOGGRPFLAGS_ENABLED)))
+            pLogger = NULL;
+    }
+    return pLogger;
+}
+RT_EXPORT_SYMBOL(RTLogGetDefaultInstanceEx);
 
 
Index: /trunk/src/VBox/Runtime/common/log/logrel.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/log/logrel.cpp	(revision 55979)
+++ /trunk/src/VBox/Runtime/common/log/logrel.cpp	(revision 55980)
@@ -70,11 +70,5 @@
 
 
-/**
- * Gets the default release logger instance.
- *
- * @returns Pointer to default release logger instance.
- * @returns NULL if no default release logger instance available.
- */
-RTDECL(PRTLOGGER)   RTLogRelDefaultInstance(void)
+RTDECL(PRTLOGGER)   RTLogRelGetDefaultInstance(void)
 {
 #ifdef IN_RC
@@ -84,5 +78,26 @@
 #endif /* !IN_RC */
 }
-RT_EXPORT_SYMBOL(RTLogRelDefaultInstance);
+RT_EXPORT_SYMBOL(RTLogRelGetDefaultInstance);
+
+
+RTDECL(PRTLOGGER)   RTLogRelGetDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+{
+#ifdef IN_RC
+    PRTLOGGER pLogger = &g_RelLogger;
+#else /* !IN_RC */
+    PRTLOGGER pLogger = g_pRelLogger;
+#endif /* !IN_RC */
+    if (pLogger)
+    {
+        if (pLogger->fFlags & RTLOGFLAGS_DISABLED)
+            pLogger = NULL;
+        else if (   iGroup != UINT32_MAX
+                 && (   (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED))
+                     != (fFlags | RTLOGGRPFLAGS_ENABLED)))
+            pLogger = NULL;
+    }
+    return pLogger;
+}
+RT_EXPORT_SYMBOL(RTLogRelGetDefaultInstanceEx);
 
 
@@ -123,5 +138,5 @@
     if (!pLogger)
     {
-        pLogger = RTLogRelDefaultInstance();
+        pLogger = RTLogRelGetDefaultInstance();
         if (!pLogger)
             return;
@@ -157,5 +172,5 @@
 RTDECL(bool) RTLogRelSetBuffering(bool fBuffered)
 {
-    PRTLOGGER pLogger = RTLogRelDefaultInstance();
+    PRTLOGGER pLogger = RTLogRelGetDefaultInstance();
     if (pLogger)
         return RTLogSetBuffering(pLogger, fBuffered);
Index: /trunk/src/VBox/Runtime/common/misc/assert.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/misc/assert.cpp	(revision 55979)
+++ /trunk/src/VBox/Runtime/common/misc/assert.cpp	(revision 55980)
@@ -146,5 +146,5 @@
 # endif
 
-        PRTLOGGER pLog = RTLogRelDefaultInstance();
+        PRTLOGGER pLog = RTLogRelGetDefaultInstance();
         if (pLog)
         {
@@ -255,5 +255,5 @@
 # endif
 
-        PRTLOGGER pLog = RTLogRelDefaultInstance();
+        PRTLOGGER pLog = RTLogRelGetDefaultInstance();
         if (pLog)
         {
Index: /trunk/src/VBox/Runtime/r3/init.cpp
===================================================================
--- /trunk/src/VBox/Runtime/r3/init.cpp	(revision 55979)
+++ /trunk/src/VBox/Runtime/r3/init.cpp	(revision 55980)
@@ -168,5 +168,5 @@
             RTLogFlush(pLogger);
 
-        pLogger = RTLogRelDefaultInstance();
+        pLogger = RTLogRelGetDefaultInstance();
         if (pLogger)
             RTLogFlush(pLogger);
Index: /trunk/src/VBox/VMM/VMMR0/VMMR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/VMMR0.cpp	(revision 55979)
+++ /trunk/src/VBox/VMM/VMMR0/VMMR0.cpp	(revision 55980)
@@ -2076,5 +2076,5 @@
         va_end(vaCopy);
     }
-    pLog = RTLogRelDefaultInstance();
+    pLog = RTLogRelGetDefaultInstance();
     if (pLog)
     {
Index: /trunk/src/VBox/VMM/VMMR0/VMMR0.def
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/VMMR0.def	(revision 55979)
+++ /trunk/src/VBox/VMM/VMMR0/VMMR0.def	(revision 55980)
@@ -39,5 +39,7 @@
     IOMMMIOMapMMIO2Page
     RTLogDefaultInstance
-    RTLogRelDefaultInstance
+    RTLogDefaultInstanceEx
+    RTLogRelGetDefaultInstance
+    RTLogRelGetDefaultInstanceEx
     RTLogLogger
     RTLogLoggerEx
Index: /trunk/src/VBox/VMM/VMMR3/DBGFLog.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/DBGFLog.cpp	(revision 55979)
+++ /trunk/src/VBox/VMM/VMMR3/DBGFLog.cpp	(revision 55980)
@@ -45,5 +45,5 @@
     {
         *ppsz += sizeof("release:") - 1;
-        pLogger = RTLogRelDefaultInstance();
+        pLogger = RTLogRelGetDefaultInstance();
     }
     else
Index: /trunk/src/VBox/VMM/VMMR3/EMRaw.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/EMRaw.cpp	(revision 55979)
+++ /trunk/src/VBox/VMM/VMMR3/EMRaw.cpp	(revision 55980)
@@ -1541,5 +1541,5 @@
             default:
                 if (PATMIsPatchGCAddr(pVM, pCtx->eip) && !(pCtx->eflags.u32 & X86_EFL_TF))
-                    LogIt(NULL, 0, LOG_GROUP_PATM, ("Patch code interrupted at %RRv for reason %Rrc\n", (RTRCPTR)CPUMGetGuestEIP(pVCpu), rc));
+                    LogIt(0, LOG_GROUP_PATM, ("Patch code interrupted at %RRv for reason %Rrc\n", (RTRCPTR)CPUMGetGuestEIP(pVCpu), rc));
                 break;
         }
Index: /trunk/src/VBox/VMM/VMMR3/VMM.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/VMM.cpp	(revision 55979)
+++ /trunk/src/VBox/VMM/VMMR3/VMM.cpp	(revision 55980)
@@ -382,5 +382,5 @@
     if (!HMIsEnabled(pVM))
     {
-        PRTLOGGER pRelLogger = RTLogRelDefaultInstance();
+        PRTLOGGER pRelLogger = RTLogRelGetDefaultInstance();
         if (pRelLogger)
         {
@@ -608,5 +608,5 @@
             PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
             if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
-                RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
+                RTLogFlushRC(RTLogRelGetDefaultInstance(), pRelLogger);
 #endif
             if (rc != VINF_VMM_CALL_HOST)
@@ -917,5 +917,5 @@
 
         pVM->vmm.s.pRCRelLoggerRC = MMHyperR3ToRC(pVM, pVM->vmm.s.pRCRelLoggerR3);
-        rc = RTLogCloneRC(RTLogRelDefaultInstance(), pVM->vmm.s.pRCRelLoggerR3, pVM->vmm.s.cbRCRelLogger,
+        rc = RTLogCloneRC(RTLogRelGetDefaultInstance(), pVM->vmm.s.pRCRelLoggerR3, pVM->vmm.s.cbRCRelLogger,
                           RCPtrLoggerWrapper, RCPtrLoggerFlush, RTLOGFLAGS_BUFFERED);
         AssertReleaseMsgRC(rc, ("RTLogCloneRC failed! rc=%Rra\n", rc));
@@ -1319,5 +1319,5 @@
         PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
         if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
-            RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
+            RTLogFlushRC(RTLogRelGetDefaultInstance(), pRelLogger);
 #endif
         if (rc != VINF_VMM_CALL_HOST)
@@ -2005,5 +2005,5 @@
         PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
         if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
-            RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
+            RTLogFlushRC(RTLogRelGetDefaultInstance(), pRelLogger);
 #endif
         if (rc == VERR_TRPM_PANIC || rc == VERR_TRPM_DONT_PANIC)
@@ -2115,5 +2115,5 @@
         PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
         if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
-            RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
+            RTLogFlushRC(RTLogRelGetDefaultInstance(), pRelLogger);
 # endif
         if (rc == VERR_TRPM_PANIC || rc == VERR_TRPM_DONT_PANIC)
Index: /trunk/src/VBox/VMM/VMMR3/VMMGuruMeditation.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/VMMGuruMeditation.cpp	(revision 55979)
+++ /trunk/src/VBox/VMM/VMMR3/VMMGuruMeditation.cpp	(revision 55980)
@@ -155,5 +155,5 @@
      * The loggers.
      */
-    pHlp->pRelLogger  = RTLogRelDefaultInstance();
+    pHlp->pRelLogger  = RTLogRelGetDefaultInstance();
 #ifdef LOG_ENABLED
     pHlp->pLogger     = RTLogDefaultInstance();
Index: /trunk/src/VBox/VMM/VMMR3/VMMTests.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR3/VMMTests.cpp	(revision 55979)
+++ /trunk/src/VBox/VMM/VMMR3/VMMTests.cpp	(revision 55980)
@@ -223,5 +223,5 @@
     PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
     if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
-        RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
+        RTLogFlushRC(RTLogRelGetDefaultInstance(), pRelLogger);
 # endif
 #endif
Index: /trunk/src/VBox/VMM/VMMRC/VMMRC.def
===================================================================
--- /trunk/src/VBox/VMM/VMMRC/VMMRC.def	(revision 55979)
+++ /trunk/src/VBox/VMM/VMMRC/VMMRC.def	(revision 55980)
@@ -37,5 +37,7 @@
     PGMPhysSimpleDirtyWriteGCPtr
     RTLogDefaultInstance
-    RTLogRelDefaultInstance
+    RTLogDefaultInstanceEx
+    RTLogRelGetDefaultInstance
+    RTLogRelGetDefaultInstanceEx
     RTTimeMilliTS
     RTTraceBufAddMsgF
Index: /trunk/src/recompiler/Sun/crt/stdio.h
===================================================================
--- /trunk/src/recompiler/Sun/crt/stdio.h	(revision 55979)
+++ /trunk/src/recompiler/Sun/crt/stdio.h	(revision 55980)
@@ -61,6 +61,6 @@
 
 #define fflush(file)            RTLogFlush(NULL)
-#define printf(...)             LogIt(LOG_INSTANCE, 0, LOG_GROUP_REM_PRINTF, (__VA_ARGS__))
-#define fprintf(logfile, ...)   LogIt(LOG_INSTANCE, 0, LOG_GROUP_REM_PRINTF, (__VA_ARGS__))
+#define printf(...)             LogIt(0, LOG_GROUP_REM_PRINTF, (__VA_ARGS__))
+#define fprintf(logfile, ...)   LogIt(0, LOG_GROUP_REM_PRINTF, (__VA_ARGS__))
 
 #ifdef DEBUG_TMP_LOGGING
Index: /trunk/src/recompiler/VBoxREMWrapper.cpp
===================================================================
--- /trunk/src/recompiler/VBoxREMWrapper.cpp	(revision 55979)
+++ /trunk/src/recompiler/VBoxREMWrapper.cpp	(revision 55980)
@@ -1083,4 +1083,9 @@
     { REMPARMDESC_FLAGS_INT,        sizeof(const char *),       NULL },
     { REMPARMDESC_FLAGS_VALIST,     0,                          NULL }
+};
+static const REMPARMDESC g_aArgsRTLogGetDefaultInstanceEx[] =
+{
+    { REMPARMDESC_FLAGS_INT,        sizeof(uint32_t),           NULL },
+    { REMPARMDESC_FLAGS_INT,        sizeof(uint32_t),           NULL }
 };
 static const REMPARMDESC g_aArgsRTLogFlags[] =
@@ -1337,5 +1342,7 @@
     { "RTAssertShouldPanic",                    (void *)(uintptr_t)&RTAssertShouldPanic,            NULL,                                       0,                                                     REMFNDESC_FLAGS_RET_INT,    sizeof(bool),       NULL },
     { "RTLogDefaultInstance",                   (void *)(uintptr_t)&RTLogDefaultInstance,           NULL,                                       0,                                                     REMFNDESC_FLAGS_RET_INT,    sizeof(PRTLOGGER),  NULL },
-    { "RTLogRelDefaultInstance",                (void *)(uintptr_t)&RTLogRelDefaultInstance,        NULL,                                       0,                                                     REMFNDESC_FLAGS_RET_INT,    sizeof(PRTLOGGER),  NULL },
+    { "RTLogRelGetDefaultInstance",             (void *)(uintptr_t)&RTLogRelGetDefaultInstance,     NULL,                                       0,                                                     REMFNDESC_FLAGS_RET_INT,    sizeof(PRTLOGGER),  NULL },
+    { "RTLogDefaultInstanceEx",                 (void *)(uintptr_t)&RTLogDefaultInstance,           &g_aArgsRTLogGetDefaultInstanceEx[0],       RT_ELEMENTS(g_aArgsRTLogGetDefaultInstanceEx),         REMFNDESC_FLAGS_RET_INT,    sizeof(PRTLOGGER),  NULL },
+    { "RTLogRelGetDefaultInstanceEx",           (void *)(uintptr_t)&RTLogRelGetDefaultInstance,     &g_aArgsRTLogGetDefaultInstanceEx[0],       RT_ELEMENTS(g_aArgsRTLogGetDefaultInstanceEx),         REMFNDESC_FLAGS_RET_INT,    sizeof(PRTLOGGER),  NULL },
     { "RTLogFlags",                             (void *)(uintptr_t)&RTLogFlags,                     &g_aArgsRTLogFlags[0],                      RT_ELEMENTS(g_aArgsRTLogFlags),                        REMFNDESC_FLAGS_RET_INT,    sizeof(int),        NULL },
     { "RTLogFlush",                             (void *)(uintptr_t)&RTLogFlush,                     &g_aArgsRTLogFlush[0],                      RT_ELEMENTS(g_aArgsRTLogFlush),                        REMFNDESC_FLAGS_RET_INT,    sizeof(int),        NULL },
Index: /trunk/src/recompiler/VBoxRecompiler.c
===================================================================
--- /trunk/src/recompiler/VBoxRecompiler.c	(revision 55979)
+++ /trunk/src/recompiler/VBoxRecompiler.c	(revision 55980)
@@ -1972,5 +1972,5 @@
 {
     LogFlow(("remR3TimersRun:\n"));
-    LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP_TM, ("remR3TimersRun\n"));
+    LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP_TM, ("remR3TimersRun\n"));
     remR3ProfileStop(STATS_QEMU_RUN_EMULATED_CODE);
     remR3ProfileStart(STATS_QEMU_RUN_TIMERS);
@@ -4298,13 +4298,13 @@
         if (pVM->rem.s.Env.pVCpu == pVCpuDst)
         {
-            LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP_TM, ("REMR3NotifyTimerPending: setting\n"));
+            LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP_TM, ("REMR3NotifyTimerPending: setting\n"));
             ASMAtomicOrS32((int32_t volatile *)&pVM->rem.s.Env.interrupt_request,
                            CPU_INTERRUPT_EXTERNAL_TIMER);
         }
         else
-            LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP_TM, ("REMR3NotifyTimerPending: pVCpu:%p != pVCpuDst:%p\n", pVM->rem.s.Env.pVCpu, pVCpuDst));
+            LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP_TM, ("REMR3NotifyTimerPending: pVCpu:%p != pVCpuDst:%p\n", pVM->rem.s.Env.pVCpu, pVCpuDst));
     }
     else
-        LogIt(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP_TM, ("REMR3NotifyTimerPending: !fInREM; cpu state=%d\n", VMCPU_GET_STATE(pVCpuDst)));
+        LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP_TM, ("REMR3NotifyTimerPending: !fInREM; cpu state=%d\n", VMCPU_GET_STATE(pVCpuDst)));
 #endif
 }
Index: /trunk/src/recompiler/osdep.h
===================================================================
--- /trunk/src/recompiler/osdep.h	(revision 55979)
+++ /trunk/src/recompiler/osdep.h	(revision 55980)
@@ -30,8 +30,8 @@
 /* Misc wrappers */
 #define fflush(file)            RTLogFlush(NULL)
-#define printf(...)             LogIt(LOG_INSTANCE, 0, LOG_GROUP_REM_PRINTF, (__VA_ARGS__))
+#define printf(...)             LogIt(0, LOG_GROUP_REM_PRINTF, (__VA_ARGS__))
 /* If DEBUG_TMP_LOGGING - goes to QEMU log file */
 #ifndef DEBUG_TMP_LOGGING
-# define fprintf(logfile, ...)  LogIt(LOG_INSTANCE, 0, LOG_GROUP_REM_PRINTF, (__VA_ARGS__))
+# define fprintf(logfile, ...)  LogIt(0, LOG_GROUP_REM_PRINTF, (__VA_ARGS__))
 #endif
 
Index: /trunk/src/recompiler/qemu-log.h
===================================================================
--- /trunk/src/recompiler/qemu-log.h	(revision 55979)
+++ /trunk/src/recompiler/qemu-log.h	(revision 55980)
@@ -50,5 +50,5 @@
 # define qemu_log_vprintf(fmt, va) do { \
         if (LogIsEnabled()) \
-            RTLogLoggerExV(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, fmt, va); \
+            RTLogLoggerExV(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, fmt, va); \
     } while (0)
 #endif
@@ -100,5 +100,5 @@
 #define qemu_log_flush() fflush(logfile)
 #else
-# define qemu_log_flush()           RTLogFlush(LOG_INSTANCE)
+# define qemu_log_flush()           RTLogFlush(NULL)
 #endif
 
