Index: /trunk/include/iprt/log.h
===================================================================
--- /trunk/include/iprt/log.h	(revision 55987)
+++ /trunk/include/iprt/log.h	(revision 55988)
@@ -390,48 +390,45 @@
 /**
  * Logger per group flags.
+ *
+ * @remarks We only use the lower 16 bits here.  We'll be combining it with the
+ *          group number in a few places.
  */
 typedef enum RTLOGGRPFLAGS
 {
     /** Enabled. */
-    RTLOGGRPFLAGS_ENABLED      = 0x00000001,
+    RTLOGGRPFLAGS_ENABLED      = 0x0001,
     /** Level 1 logging. */
-    RTLOGGRPFLAGS_LEVEL_1      = 0x00000002,
+    RTLOGGRPFLAGS_LEVEL_1      = 0x0002,
     /** Level 2 logging. */
-    RTLOGGRPFLAGS_LEVEL_2      = 0x00000004,
+    RTLOGGRPFLAGS_LEVEL_2      = 0x0004,
     /** Level 3 logging. */
-    RTLOGGRPFLAGS_LEVEL_3      = 0x00000008,
+    RTLOGGRPFLAGS_LEVEL_3      = 0x0008,
     /** Level 4 logging. */
-    RTLOGGRPFLAGS_LEVEL_4      = 0x00000010,
+    RTLOGGRPFLAGS_LEVEL_4      = 0x0010,
     /** Level 5 logging. */
-    RTLOGGRPFLAGS_LEVEL_5      = 0x00000020,
+    RTLOGGRPFLAGS_LEVEL_5      = 0x0020,
     /** Level 6 logging. */
-    RTLOGGRPFLAGS_LEVEL_6      = 0x00000040,
+    RTLOGGRPFLAGS_LEVEL_6      = 0x0040,
+    /** Level 7 logging. */
+    RTLOGGRPFLAGS_LEVEL_7      = 0x0080,
+    /** Level 8 logging. */
+    RTLOGGRPFLAGS_LEVEL_8      = 0x0100,
+    /** Level 9 logging. */
+    RTLOGGRPFLAGS_LEVEL_9      = 0x0200,
+    /** Level 10 logging. */
+    RTLOGGRPFLAGS_LEVEL_10     = 0x0400,
+    /** Level 11 logging. */
+    RTLOGGRPFLAGS_LEVEL_11     = 0x0800,
+    /** Level 12 logging. */
+    RTLOGGRPFLAGS_LEVEL_12     = 0x1000,
     /** Flow logging. */
-    RTLOGGRPFLAGS_FLOW         = 0x00000080,
+    RTLOGGRPFLAGS_FLOW         = 0x2000,
+    /** Warnings logging. */
+    RTLOGGRPFLAGS_WARN         = 0x4000,
+
     /** Restrict the number of log entries. */
-    RTLOGGRPFLAGS_RESTRICT     = 0x00000100,
-
-    /** Lelik logging. */
-    RTLOGGRPFLAGS_LELIK        = 0x00010000,
-    /** Michael logging. */
-    RTLOGGRPFLAGS_MICHAEL      = 0x00020000,
-    /** sunlover logging. */
-    RTLOGGRPFLAGS_SUNLOVER     = 0x00040000,
-    /** Achim logging. */
-    RTLOGGRPFLAGS_ACHIM        = 0x00080000,
-    /** Sander logging. */
-    RTLOGGRPFLAGS_SANDER       = 0x00100000,
-    /** Klaus logging. */
-    RTLOGGRPFLAGS_KLAUS        = 0x00200000,
-    /** Frank logging. */
-    RTLOGGRPFLAGS_FRANK        = 0x00400000,
-    /** bird logging. */
-    RTLOGGRPFLAGS_BIRD         = 0x00800000,
-    /** aleksey logging. */
-    RTLOGGRPFLAGS_ALEKSEY      = 0x01000000,
-    /** dj logging. */
-    RTLOGGRPFLAGS_DJ           = 0x02000000,
-    /** NoName logging. */
-    RTLOGGRPFLAGS_NONAME       = 0x04000000
+    RTLOGGRPFLAGS_RESTRICT     = 0x40000000,
+    /** Blow up the type. */
+    RTLOGGRPFLAGS_32BIT_HACK   = 0x7fffffff
 } RTLOGGRPFLAGS;
 
@@ -511,4 +508,87 @@
 
 
+/** @name Macros for checking whether a log level is enabled.
+ * @{ */
+/** @def LogIsItEnabled
+ * Checks whether the specified logging group is enabled or not.
+ */
+#ifdef LOG_ENABLED
+# define LogIsItEnabled(a_fFlags, a_iGroup) ( RTLogDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)) != NULL )
+#else
+# define LogIsItEnabled(a_fFlags, a_iGroup) (false)
+#endif
+
+/** @def LogIsEnabled
+ * Checks whether level 1 logging is enabled.
+ */
+#define LogIsEnabled()      LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP)
+
+/** @def LogIs2Enabled
+ * Checks whether level 2 logging is enabled.
+ */
+#define LogIs2Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP)
+
+/** @def LogIs3Enabled
+ * Checks whether level 3 logging is enabled.
+ */
+#define LogIs3Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP)
+
+/** @def LogIs4Enabled
+ * Checks whether level 4 logging is enabled.
+ */
+#define LogIs4Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP)
+
+/** @def LogIs5Enabled
+ * Checks whether level 5 logging is enabled.
+ */
+#define LogIs5Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP)
+
+/** @def LogIs6Enabled
+ * Checks whether level 6 logging is enabled.
+ */
+#define LogIs6Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP)
+
+/** @def LogIs7Enabled
+ * Checks whether level 7 logging is enabled.
+ */
+#define LogIs7Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP)
+
+/** @def LogIs8Enabled
+ * Checks whether level 8 logging is enabled.
+ */
+#define LogIs8Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP)
+
+/** @def LogIs9Enabled
+ * Checks whether level 9 logging is enabled.
+ */
+#define LogIs9Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP)
+
+/** @def LogIs10Enabled
+ * Checks whether level 10 logging is enabled.
+ */
+#define LogIs10Enabled()    LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP)
+
+/** @def LogIs11Enabled
+ * Checks whether level 11 logging is enabled.
+ */
+#define LogIs11Enabled()    LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP)
+
+/** @def LogIs12Enabled
+ * Checks whether level 12 logging is enabled.
+ */
+#define LogIs12Enabled()    LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP)
+
+/** @def LogIsFlowEnabled
+ * Checks whether execution flow logging is enabled.
+ */
+#define LogIsFlowEnabled()  LogIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP)
+
+/** @def LogIsWarnEnabled
+ * Checks whether execution flow logging is enabled.
+ */
+#define LogIsWarnEnabled()  LogIsItEnabled(RTLOGGRPFLAGS_WARN, LOG_GROUP)
+/** @} */
+
+
 /** @def LogIt
  * Write to specific logger if group enabled.
@@ -520,5 +600,5 @@
    do \
    { \
-        register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(a_fFlags, a_iGroup); \
+        register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \
         if (RT_LIKELY(!LogIt_pLogger)) \
         {   /* likely */ } \
@@ -534,5 +614,5 @@
     do \
     { \
-        register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(a_fFlags, a_iGroup); \
+        register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \
         if (RT_LIKELY(!LogIt_pLogger)) \
         {   /* likely */ } \
@@ -545,5 +625,5 @@
     do \
     { \
-        register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(0, UINT32_MAX); \
+        register PRTLOGGER LogIt_pLogger = RTLogDefaultInstanceEx(RT_MAKE_U32(0, UINT16_MAX)); \
         if (LogIt_pLogger) \
             LogIt_pLogger->pfnLogger fmtargs; \
@@ -561,4 +641,6 @@
 
 
+/** @name Basic logging macros
+ * @{ */
 /** @def Log
  * Level 1 logging that works regardless of the group settings.
@@ -596,99 +678,48 @@
 #define Log6(a)         LogIt(RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
 
+/** @def Log7
+ * Level 7 logging.
+ */
+#define Log7(a)         LogIt(RTLOGGRPFLAGS_LEVEL_7,  LOG_GROUP, a)
+
+/** @def Log8
+ * Level 8 logging.
+ */
+#define Log8(a)         LogIt(RTLOGGRPFLAGS_LEVEL_8,  LOG_GROUP, a)
+
+/** @def Log9
+ * Level 9 logging.
+ */
+#define Log9(a)         LogIt(RTLOGGRPFLAGS_LEVEL_9,  LOG_GROUP, a)
+
+/** @def Log10
+ * Level 10 logging.
+ */
+#define Log10(a)        LogIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, a)
+
+/** @def Log11
+ * Level 11 logging.
+ */
+#define Log11(a)        LogIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, a)
+
+/** @def Log12
+ * Level 12 logging.
+ */
+#define Log12(a)        LogIt(RTLOGGRPFLAGS_LEVEL_12,  LOG_GROUP, a)
+
 /** @def LogFlow
  * Logging of execution flow.
  */
-#define LogFlow(a)      LogIt(RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
-
-/** @def LogLelik
- *  lelik logging.
- */
-#define LogLelik(a)     LogIt(RTLOGGRPFLAGS_LELIK,    LOG_GROUP, a)
-
-
-/** @def LogMichael
- * michael logging.
- */
-#define LogMichael(a)   LogIt(RTLOGGRPFLAGS_MICHAEL,  LOG_GROUP, a)
-
-/** @def LogSunlover
- * sunlover logging.
- */
-#define LogSunlover(a)  LogIt(RTLOGGRPFLAGS_SUNLOVER, LOG_GROUP, a)
-
-/** @def LogAchim
- * Achim logging.
- */
-#define LogAchim(a)     LogIt(RTLOGGRPFLAGS_ACHIM,    LOG_GROUP, a)
-
-/** @def LogSander
- * Sander logging.
- */
-#define LogSander(a)    LogIt(RTLOGGRPFLAGS_SANDER,   LOG_GROUP, a)
-
-/** @def LogKlaus
- *  klaus logging.
- */
-#define LogKlaus(a)     LogIt(RTLOGGRPFLAGS_KLAUS,    LOG_GROUP, a)
-
-/** @def LogFrank
- *  frank logging.
- */
-#define LogFrank(a)     LogIt(RTLOGGRPFLAGS_FRANK,    LOG_GROUP, a)
-
-/** @def LogBird
- * bird logging.
- */
-#define LogBird(a)      LogIt(RTLOGGRPFLAGS_BIRD,     LOG_GROUP, a)
-
-/** @def LogAleksey
- * aleksey logging.
- */
-#define LogAleksey(a)   LogIt(RTLOGGRPFLAGS_ALEKSEY,  LOG_GROUP, a)
-
-/** @def LogDJ
- * dj logging.
- */
-#define LogDJ(a)        LogIt(RTLOGGRPFLAGS_DJ,  LOG_GROUP, a)
-
-/** @def LogNoName
- * NoName logging.
- */
-#define LogNoName(a)    LogIt(RTLOGGRPFLAGS_NONAME,   LOG_GROUP, a)
-
-/** @def LogWarning
- * The same as Log(), but prepents a <tt>"WARNING! "</tt> string to the message.
- *
- * @param   a   Custom log message in format <tt>("string\n" [, args])</tt>.
- */
-#if defined(LOG_USE_C99)
-# define LogWarning(a) \
-    _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "WARNING! %M", _LogRemoveParentheseis a )
-#else
-# define LogWarning(a) \
-    do { Log(("WARNING! ")); Log(a); } while (0)
-#endif
-
-/** @def LogTrace
- * Macro to trace the execution flow: logs the file name, line number and
- * function name. Can be easily searched for in log files using the
- * ">>>>>" pattern (prepended to the beginning of each line).
- */
-#define LogTrace() \
-    LogFlow((">>>>> %s (%d): " LOG_FN_FMT "\n", __FILE__, __LINE__, __PRETTY_FUNCTION__))
-
-/** @def LogTraceMsg
- * The same as LogTrace but logs a custom log message right after the trace line.
- *
- * @param   a   Custom log message in format <tt>("string\n" [, args])</tt>.
- */
-#ifdef LOG_USE_C99
-# define LogTraceMsg(a) \
-    _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, ">>>>> %s (%d): " LOG_FN_FMT ": %M", __FILE__, __LINE__, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define LogTraceMsg(a) \
-    do {  LogFlow((">>>>> %s (%d): " LOG_FN_FMT ": ", __FILE__, __LINE__, __PRETTY_FUNCTION__)); LogFlow(a); } while (0)
-#endif
-
+#define LogFlow(a)      LogIt(RTLOGGRPFLAGS_FLOW,      LOG_GROUP, a)
+
+/** @def LogWarn
+ * Logging of warnings.
+ */
+#define LogWarn(a)      LogIt(RTLOGGRPFLAGS_WARN,      LOG_GROUP, a)
+/** @} */
+
+
+/** @name Logging macros prefixing the current function name.
+ * @{ */
 /** @def LogFunc
  * Level 1 logging inside C/C++ functions.
@@ -700,9 +731,7 @@
  */
 #ifdef LOG_USE_C99
-# define LogFunc(a) \
-    _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define LogFunc(a) \
-    do { Log((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log(a); } while (0)
+# define LogFunc(a)   _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define LogFunc(a)   do { Log((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log(a); } while (0)
 #endif
 
@@ -716,9 +745,7 @@
  */
 #ifdef LOG_USE_C99
-# define Log2Func(a) \
-    _LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define Log2Func(a) \
-    do { Log2((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log2(a); } while (0)
+# define Log2Func(a)  _LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log2Func(a)  do { Log2((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log2(a); } while (0)
 #endif
 
@@ -732,9 +759,7 @@
  */
 #ifdef LOG_USE_C99
-# define Log3Func(a) \
-    _LogIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define Log3Func(a) \
-    do { Log3((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log3(a); } while (0)
+# define Log3Func(a)  _LogIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log3Func(a)  do { Log3((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log3(a); } while (0)
 #endif
 
@@ -748,9 +773,7 @@
  */
 #ifdef LOG_USE_C99
-# define Log4Func(a) \
-    _LogIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define Log4Func(a) \
-    do { Log4((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log4(a); } while (0)
+# define Log4Func(a)  _LogIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log4Func(a)  do { Log4((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log4(a); } while (0)
 #endif
 
@@ -764,9 +787,7 @@
  */
 #ifdef LOG_USE_C99
-# define Log5Func(a) \
-    _LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define Log5Func(a) \
-    do { Log5((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log5(a); } while (0)
+# define Log5Func(a)  _LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log5Func(a)  do { Log5((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log5(a); } while (0)
 #endif
 
@@ -780,15 +801,133 @@
  */
 #ifdef LOG_USE_C99
-# define Log6Func(a) \
-    _LogIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define Log6Func(a) \
-    do { Log6((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log6(a); } while (0)
-#endif
+# define Log6Func(a)  _LogIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log6Func(a)  do { Log6((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log6(a); } while (0)
+#endif
+
+/** @def Log7Func
+ * Level 7 logging inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by a
+ * semicolon and space.
+ *
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log7Func(a)  _LogIt(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log7Func(a)  do { Log7((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log7(a); } while (0)
+#endif
+
+/** @def Log8Func
+ * Level 8 logging inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by a
+ * semicolon and space.
+ *
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log8Func(a)  _LogIt(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log8Func(a)  do { Log8((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log8(a); } while (0)
+#endif
+
+/** @def Log9Func
+ * Level 9 logging inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by a
+ * semicolon and space.
+ *
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log9Func(a)  _LogIt(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log9Func(a)  do { Log9((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log9(a); } while (0)
+#endif
+
+/** @def Log10Func
+ * Level 10 logging inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by a
+ * semicolon and space.
+ *
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log10Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log10Func(a) do { Log10((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log10(a); } while (0)
+#endif
+
+/** @def Log11Func
+ * Level 11 logging inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by a
+ * semicolon and space.
+ *
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log11Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log11Func(a) do { Log11((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log11(a); } while (0)
+#endif
+
+/** @def Log12Func
+ * Level 12 logging inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by a
+ * semicolon and space.
+ *
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log12Func(a) _LogIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log12Func(a) do { Log12((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); Log12(a); } while (0)
+#endif
+
+/** @def LogFlowFunc
+ * Macro to log the execution flow inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by
+ * a semicolon and space.
+ *
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define LogFlowFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define LogFlowFunc(a) \
+    do { LogFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogFlow(a); } while (0)
+#endif
+
+/** @def LogWarnFunc
+ * Macro to log a warning inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by
+ * a semicolon and space.
+ *
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define LogWarnFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_WARN, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define LogWarnFunc(a) \
+    do { LogFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogFlow(a); } while (0)
+#endif
+/** @} */
+
+
+/** @name Logging macros prefixing the this pointer value and method name.
+ * @{ */
 
 /** @def LogThisFunc
- * The same as LogFunc but for class functions (methods): the resulting log
- * line is additionally prepended with a hex value of |this| pointer.
- *
+ * Level 1 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
  * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
  */
@@ -797,22 +936,177 @@
     _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
-# define LogThisFunc(a) \
-    do { Log(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log(a); } while (0)
-#endif
-
-/** @def LogFlowFunc
- * Macro to log the execution flow inside C/C++ functions.
- *
- * Prepends the given log message with the function name followed by
- * a semicolon and space.
- *
- * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
- */
-#ifdef LOG_USE_C99
-# define LogFlowFunc(a) \
-    _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define LogFlowFunc(a) \
-    do { LogFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogFlow(a); } while (0)
+# define LogThisFunc(a) do { Log(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log(a); } while (0)
+#endif
+
+/** @def Log2ThisFunc
+ * Level 2 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log2ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log2ThisFunc(a) do { Log2(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log2(a); } while (0)
+#endif
+
+/** @def Log3ThisFunc
+ * Level 3 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log3ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log3ThisFunc(a) do { Log3(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log3(a); } while (0)
+#endif
+
+/** @def Log4ThisFunc
+ * Level 4 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log4ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log4ThisFunc(a) do { Log4(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log4(a); } while (0)
+#endif
+
+/** @def Log5ThisFunc
+ * Level 5 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log5ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log5ThisFunc(a) do { Log5(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log5(a); } while (0)
+#endif
+
+/** @def Log6ThisFunc
+ * Level 6 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log6ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log6ThisFunc(a) do { Log6(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log6(a); } while (0)
+#endif
+
+/** @def Log7ThisFunc
+ * Level 7 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log7ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log7ThisFunc(a) do { Log7(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log7(a); } while (0)
+#endif
+
+/** @def Log8ThisFunc
+ * Level 8 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log8ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log8ThisFunc(a) do { Log8(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log8(a); } while (0)
+#endif
+
+/** @def Log9ThisFunc
+ * Level 9 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log9ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log9ThisFunc(a) do { Log9(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log9(a); } while (0)
+#endif
+
+/** @def Log10ThisFunc
+ * Level 10 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log10ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log10ThisFunc(a) do { Log10(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log10(a); } while (0)
+#endif
+
+/** @def Log11ThisFunc
+ * Level 11 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log11ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log11ThisFunc(a) do { Log11(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log11(a); } while (0)
+#endif
+
+/** @def Log12ThisFunc
+ * Level 12 logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define Log12ThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define Log12ThisFunc(a) do { Log12(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); Log12(a); } while (0)
+#endif
+
+/** @def LogFlowThisFunc
+ * Flow level logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define LogFlowThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define LogFlowThisFunc(a) do { LogFlow(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogFlow(a); } while (0)
+#endif
+
+/** @def LogWarnThisFunc
+ * Warning level logging inside a C++ non-static method, with object pointer and
+ * method name prefixed to the given message.
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define LogWarnThisFunc(a) \
+    _LogIt(RTLOGGRPFLAGS_WARN, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define LogWarnThisFunc(a) do { LogWarn(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogWarn(a); } while (0)
+#endif
+/** @} */
+
+
+/** @name Misc Logging Macros
+ * @{ */
+
+/** @def LogWarning1
+ * The same as Log(), but prepents a <tt>"WARNING! "</tt> string to the message.
+ *
+ * @param   a   Custom log message in format <tt>("string\n" [, args])</tt>.
+ */
+#if defined(LOG_USE_C99)
+# define Log1Warning(a)     _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "WARNING! %M", _LogRemoveParentheseis a )
+#else
+# define Log1Warning(a)     do { Log(("WARNING! ")); Log(a); } while (0)
 #endif
 
@@ -823,23 +1117,9 @@
  */
 #ifdef LOG_USE_C99
-# define LogWarningFunc(a) \
+# define Log1WarningFunc(a) \
     _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": WARNING! %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
-# define LogWarningFunc(a) \
+# define Log1WarningFunc(a) \
     do { Log((LOG_FN_FMT ": WARNING! ", __PRETTY_FUNCTION__)); Log(a); } while (0)
-#endif
-
-/** @def LogFlowThisFunc
- * The same as LogFlowFunc but for class functions (methods): the resulting log
- * line is additionally prepended with a hex value of |this| pointer.
- *
- * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
- */
-#ifdef LOG_USE_C99
-# define LogFlowThisFunc(a) \
-    _LogIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define LogFlowThisFunc(a) \
-    do { LogFlow(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogFlow(a); } while (0)
 #endif
 
@@ -851,10 +1131,11 @@
  */
 #ifdef LOG_USE_C99
-# define LogWarningThisFunc(a) \
+# define Log1WarningThisFunc(a) \
     _LogIt(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": WARNING! %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
-# define LogWarningThisFunc(a) \
+# define Log1WarningThisFunc(a) \
     do { Log(("{%p} " LOG_FN_FMT ": WARNING! ", this, __PRETTY_FUNCTION__)); Log(a); } while (0)
 #endif
+
 
 /** Shortcut to |LogFlowFunc ("ENTER\n")|, marks the beginnig of the function. */
@@ -865,5 +1146,5 @@
 
 /** Shortcut to |LogFlowFunc ("LEAVE: %Rrc\n")|, marks the end of the function. */
-#define LogFlowFuncLeaveRC(rc)      LogFlowFunc(("LEAVE: %Rrc\n", (rc)))
+#define LogFlowFuncLeaveRC(rc)  LogFlowFunc(("LEAVE: %Rrc\n", (rc)))
 
 /** Shortcut to |LogFlowThisFunc ("ENTER\n")|, marks the beginnig of the function. */
@@ -872,4 +1153,5 @@
 /** Shortcut to |LogFlowThisFunc ("LEAVE\n")|, marks the end of the function. */
 #define LogFlowThisFuncLeave()  LogFlowThisFunc(("LEAVE\n"))
+
 
 /** @def LogObjRefCnt
@@ -880,60 +1162,16 @@
  *              IUnknown subclass or simply define COM-style AddRef() and
  *              Release() methods)
- *
- * @note Use it only for temporary debugging. It leaves dummy code even if
- *       logging is disabled.
  */
 #define LogObjRefCnt(pObj) \
     do { \
-        int refc = (pObj)->AddRef(); \
-        LogFlow((#pObj "{%p}.refCnt=%d\n", (pObj), refc - 1)); \
-        (pObj)->Release(); \
+        if (LogIsFlowEnabled()) \
+        { \
+            int cRefsForLog = (pObj)->AddRef(); \
+            LogFlow((#pObj "{%p}.refCnt=%d\n", (pObj), cRefsForLog - 1)); \
+            (pObj)->Release(); \
+        } \
     } while (0)
-
-
-/** @def LogIsItEnabled
- * Checks whether the specified logging group is enabled or not.
- */
-#ifdef LOG_ENABLED
-# define LogIsItEnabled(a_fFlags, a_iGroup) \
-    LogIsItEnabledInternal((unsigned)(a_iGroup), (unsigned)(a_fFlags))
-#else
-# define LogIsItEnabled(a_fFlags, a_iGroup) (false)
-#endif
-
-/** @def LogIsEnabled
- * Checks whether level 1 logging is enabled.
- */
-#define LogIsEnabled()      LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP)
-
-/** @def LogIs2Enabled
- * Checks whether level 2 logging is enabled.
- */
-#define LogIs2Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP)
-
-/** @def LogIs3Enabled
- * Checks whether level 3 logging is enabled.
- */
-#define LogIs3Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP)
-
-/** @def LogIs4Enabled
- * Checks whether level 4 logging is enabled.
- */
-#define LogIs4Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP)
-
-/** @def LogIs5Enabled
- * Checks whether level 5 logging is enabled.
- */
-#define LogIs5Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP)
-
-/** @def LogIs6Enabled
- * Checks whether level 6 logging is enabled.
- */
-#define LogIs6Enabled()     LogIsItEnabled(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP)
-
-/** @def LogIsFlowEnabled
- * Checks whether execution flow logging is enabled.
- */
-#define LogIsFlowEnabled()  LogIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP)
+/** @} */
+
 
 
@@ -1003,4 +1241,82 @@
 # define RTLOG_REL_DISABLED
 #endif
+
+/** @name Macros for checking whether a release log level is enabled.
+ * @{ */
+/** @def LogRelIsItEnabled
+ * Checks whether the specified release logging group is enabled or not.
+ */
+#define LogRelIsItEnabled(a_fFlags, a_iGroup) ( RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)) != NULL )
+
+/** @def LogRelIsEnabled
+ * Checks whether level 1 release logging is enabled.
+ */
+#define LogRelIsEnabled()      LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP)
+
+/** @def LogRelIs2Enabled
+ * Checks whether level 2 release logging is enabled.
+ */
+#define LogRelIs2Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP)
+
+/** @def LogRelIs3Enabled
+ * Checks whether level 3 release logging is enabled.
+ */
+#define LogRelIs3Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP)
+
+/** @def LogRelIs4Enabled
+ * Checks whether level 4 release logging is enabled.
+ */
+#define LogRelIs4Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP)
+
+/** @def LogRelIs5Enabled
+ * Checks whether level 5 release logging is enabled.
+ */
+#define LogRelIs5Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP)
+
+/** @def LogRelIs6Enabled
+ * Checks whether level 6 release logging is enabled.
+ */
+#define LogRelIs6Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP)
+
+/** @def LogRelIs7Enabled
+ * Checks whether level 7 release logging is enabled.
+ */
+#define LogRelIs7Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_7, LOG_GROUP)
+
+/** @def LogRelIs8Enabled
+ * Checks whether level 8 release logging is enabled.
+ */
+#define LogRelIs8Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_8, LOG_GROUP)
+
+/** @def LogRelIs2Enabled
+ * Checks whether level 9 release logging is enabled.
+ */
+#define LogRelIs9Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_9, LOG_GROUP)
+
+/** @def LogRelIs10Enabled
+ * Checks whether level 10 release logging is enabled.
+ */
+#define LogRelIs10Enabled()    LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP)
+
+/** @def LogRelIs11Enabled
+ * Checks whether level 10 release logging is enabled.
+ */
+#define LogRelIs11Enabled()    LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP)
+
+/** @def LogRelIs12Enabled
+ * Checks whether level 12 release logging is enabled.
+ */
+#define LogRelIs12Enabled()    LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP)
+
+/** @def LogRelIsFlowEnabled
+ * Checks whether execution flow release logging is enabled.
+ */
+#define LogRelIsFlowEnabled()  LogRelIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP)
+
+/** @def LogRelIsWarnEnabled
+ * Checks whether warning level release logging is enabled.
+ */
+#define LogRelIsWarnEnabled()  LogRelIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP)
+/** @} */
 
 
@@ -1021,5 +1337,5 @@
     do \
     { \
-        PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+        PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \
         if (RT_LIKELY(!LogRelIt_pLogger)) \
         { /* likely */ } \
@@ -1033,5 +1349,5 @@
     do \
     { \
-        PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+        PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \
         if (LogRelIt_pLogger) \
             RTLogLoggerEx(LogRelIt_pLogger, a_fFlags, a_iGroup, __VA_ARGS__); \
@@ -1043,5 +1359,5 @@
     do \
     { \
-        PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+        PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \
         if (LogRelIt_pLogger) \
         { \
@@ -1061,5 +1377,5 @@
    do \
    { \
-       PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+       PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \
        if (LogRelIt_pLogger) \
        { \
@@ -1071,5 +1387,5 @@
    do \
    { \
-       PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+       PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \
        if (RT_LIKELY(!LogRelIt_pLogger)) \
        { /* likely */ } \
@@ -1083,5 +1399,5 @@
    do \
    { \
-       PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(a_fFlags, a_iGroup); \
+       PRTLOGGER LogRelIt_pLogger = RTLogRelGetDefaultInstanceEx(RT_MAKE_U32(a_fFlags, a_iGroup)); \
        if (LogRelIt_pLogger) \
        { \
@@ -1109,38 +1425,150 @@
 
 
+/** @name Basic release logging macros
+ * @{ */
 /** @def LogRel
- * Level 1 logging.
- */
-#define LogRel(a)          LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
+ * Level 1 release logging.
+ */
+#define LogRel(a)           LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
 
 /** @def LogRel2
- * Level 2 logging.
- */
-#define LogRel2(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_2,  LOG_GROUP, a)
+ * Level 2 release logging.
+ */
+#define LogRel2(a)          LogRelIt(RTLOGGRPFLAGS_LEVEL_2,  LOG_GROUP, a)
 
 /** @def LogRel3
- * Level 3 logging.
- */
-#define LogRel3(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_3,  LOG_GROUP, a)
+ * Level 3 release logging.
+ */
+#define LogRel3(a)          LogRelIt(RTLOGGRPFLAGS_LEVEL_3,  LOG_GROUP, a)
 
 /** @def LogRel4
- * Level 4 logging.
- */
-#define LogRel4(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_4,  LOG_GROUP, a)
+ * Level 4 release logging.
+ */
+#define LogRel4(a)          LogRelIt(RTLOGGRPFLAGS_LEVEL_4,  LOG_GROUP, a)
 
 /** @def LogRel5
- * Level 5 logging.
- */
-#define LogRel5(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_5,  LOG_GROUP, a)
+ * Level 5 release logging.
+ */
+#define LogRel5(a)          LogRelIt(RTLOGGRPFLAGS_LEVEL_5,  LOG_GROUP, a)
 
 /** @def LogRel6
- * Level 6 logging.
- */
-#define LogRel6(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
+ * Level 6 release logging.
+ */
+#define LogRel6(a)          LogRelIt(RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
+
+/** @def LogRel7
+ * Level 7 release logging.
+ */
+#define LogRel7(a)          LogRelIt(RTLOGGRPFLAGS_LEVEL_7,  LOG_GROUP, a)
+
+/** @def LogRel8
+ * Level 8 release logging.
+ */
+#define LogRel8(a)          LogRelIt(RTLOGGRPFLAGS_LEVEL_8,  LOG_GROUP, a)
+
+/** @def LogRel9
+ * Level 9 release logging.
+ */
+#define LogRel9(a)          LogRelIt(RTLOGGRPFLAGS_LEVEL_9,  LOG_GROUP, a)
+
+/** @def LogRel10
+ * Level 10 release logging.
+ */
+#define LogRel10(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, a)
+
+/** @def LogRel11
+ * Level 11 release logging.
+ */
+#define LogRel11(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, a)
+
+/** @def LogRel12
+ * Level 12 release logging.
+ */
+#define LogRel12(a)         LogRelIt(RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, a)
 
 /** @def LogRelFlow
  * Logging of execution flow.
  */
-#define LogRelFlow(a)      LogRelIt(RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
+#define LogRelFlow(a)       LogRelIt(RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
+
+/** @def LogRelWarn
+ * Warning level release logging.
+ */
+#define LogRelWarn(a)       LogRelIt(RTLOGGRPFLAGS_WARN,     LOG_GROUP, a)
+/** @} */
+
+
+
+/** @name Basic release logging macros with local max
+ * @{ */
+/** @def LogRelMax
+ * Level 1 release logging with a max number of log entries.
+ */
+#define LogRelMax(a_cMax, a)        LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, a)
+
+/** @def LogRelMax2
+ * Level 2 release logging with a max number of log entries.
+ */
+#define LogRelMax2(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_2,  LOG_GROUP, a)
+
+/** @def LogRelMax3
+ * Level 3 release logging with a max number of log entries.
+ */
+#define LogRelMax3(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_3,  LOG_GROUP, a)
+
+/** @def LogRelMax4
+ * Level 4 release logging with a max number of log entries.
+ */
+#define LogRelMax4(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_4,  LOG_GROUP, a)
+
+/** @def LogRelMax5
+ * Level 5 release logging with a max number of log entries.
+ */
+#define LogRelMax5(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_5,  LOG_GROUP, a)
+
+/** @def LogRelMax6
+ * Level 6 release logging with a max number of log entries.
+ */
+#define LogRelMax6(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
+
+/** @def LogRelMax7
+ * Level 7 release logging with a max number of log entries.
+ */
+#define LogRelMax7(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_7,  LOG_GROUP, a)
+
+/** @def LogRelMax8
+ * Level 8 release logging with a max number of log entries.
+ */
+#define LogRelMax8(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_8,  LOG_GROUP, a)
+
+/** @def LogRelMax9
+ * Level 9 release logging with a max number of log entries.
+ */
+#define LogRelMax9(a_cMax, a)       LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_9,  LOG_GROUP, a)
+
+/** @def LogRelMax10
+ * Level 10 release logging with a max number of log entries.
+ */
+#define LogRelMax10(a_cMax, a)      LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_10, LOG_GROUP, a)
+
+/** @def LogRelMax11
+ * Level 11 release logging with a max number of log entries.
+ */
+#define LogRelMax11(a_cMax, a)      LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_11, LOG_GROUP, a)
+
+/** @def LogRelMax12
+ * Level 12 release logging with a max number of log entries.
+ */
+#define LogRelMax12(a_cMax, a)      LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_12, LOG_GROUP, a)
+
+/** @def LogRelFlow
+ * Logging of execution flow with a max number of log entries.
+ */
+#define LogRelMaxFlow(a_cMax, a)    LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
+/** @} */
+
+
+/** @name Release logging macros prefixing the current function name.
+ * @{ */
 
 /** @def LogRelFunc
@@ -1152,7 +1580,55 @@
     _LogRelItLikely(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", RT_GCC_EXTENSION __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
-# define LogRelFunc(a) \
-    do { LogRel((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRel(a); } while (0)
-#endif
+# define LogRelFunc(a)      do { LogRel((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRel(a); } while (0)
+#endif
+
+/** @def LogRelFlowFunc
+ * Release logging.  Macro to log the execution flow inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by
+ * a semicolon and space.
+ *
+ * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define LogRelFlowFunc(a)  _LogRelIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define LogRelFlowFunc(a)  do { LogRelFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelFlow(a); } while (0)
+#endif
+
+/** @def LogRelMaxFunc
+ * Release logging.  Prepends the given log message with the function name
+ * followed by a semicolon and space.
+ */
+#ifdef LOG_USE_C99
+# define LogRelMaxFunc(a_cMax, a) \
+    _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define LogRelMaxFunc(a_cMax, a) \
+    do { LogRelMax(a_cMax, (LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelMax(a_cMax, a); } while (0)
+#endif
+
+/** @def LogRelMaxFlowFunc
+ * Release logging.  Macro to log the execution flow inside C/C++ functions.
+ *
+ * Prepends the given log message with the function name followed by
+ * a semicolon and space.
+ *
+ * @param   a_cMax  Max number of times this should hit the log.
+ * @param   a       Log message in format <tt>("string\n" [, args])</tt>.
+ */
+#ifdef LOG_USE_C99
+# define LogRelMaxFlowFunc(a_cMax, a) \
+    _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+#else
+# define LogRelMaxFlowFunc(a_cMax, a) \
+    do { LogRelMaxFlow(a_cMax, (LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelFlow(a_cMax, a); } while (0)
+#endif
+
+/** @} */
+
+
+/** @name Release Logging macros prefixing the this pointer value and method name.
+ * @{ */
 
 /** @def LogRelThisFunc
@@ -1166,117 +1642,4 @@
 # define LogRelThisFunc(a) \
     do { LogRel(("{%p} " LOG_FN_FMT ": ", this, __PRETTY_FUNCTION__)); LogRel(a); } while (0)
-#endif
-
-/** @def LogRelFlowFunc
- * Release logging.  Macro to log the execution flow inside C/C++ functions.
- *
- * Prepends the given log message with the function name followed by
- * a semicolon and space.
- *
- * @param   a   Log message in format <tt>("string\n" [, args])</tt>.
- */
-#ifdef LOG_USE_C99
-# define LogRelFlowFunc(a) \
-    _LogRelIt(RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define LogRelFlowFunc(a) \
-    do { LogRelFlow((LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelFlow(a); } while (0)
-#endif
-
-/** @def LogRelLelik
- *  lelik logging.
- */
-#define LogRelLelik(a)              LogRelIt(RTLOGGRPFLAGS_LELIK,    LOG_GROUP, a)
-
-/** @def LogRelMichael
- * michael logging.
- */
-#define LogRelMichael(a)            LogRelIt(RTLOGGRPFLAGS_MICHAEL,  LOG_GROUP, a)
-
-/** @def LogRelSunlover
- * sunlover logging.
- */
-#define LogRelSunlover(a)           LogRelIt(RTLOGGRPFLAGS_SUNLOVER, LOG_GROUP, a)
-
-/** @def LogRelAchim
- * Achim logging.
- */
-#define LogRelAchim(a)              LogRelIt(RTLOGGRPFLAGS_ACHIM,    LOG_GROUP, a)
-
-/** @def LogRelSander
- * Sander logging.
- */
-#define LogRelSander(a)             LogRelIt(RTLOGGRPFLAGS_SANDER,   LOG_GROUP, a)
-
-/** @def LogRelKlaus
- *  klaus logging.
- */
-#define LogRelKlaus(a)              LogRelIt(RTLOGGRPFLAGS_KLAUS,    LOG_GROUP, a)
-
-/** @def LogRelFrank
- *  frank logging.
- */
-#define LogRelFrank(a)              LogRelIt(RTLOGGRPFLAGS_FRANK,    LOG_GROUP, a)
-
-/** @def LogRelBird
- * bird logging.
- */
-#define LogRelBird(a)               LogRelIt(RTLOGGRPFLAGS_BIRD,     LOG_GROUP, a)
-
-/** @def LogRelNoName
- * NoName logging.
- */
-#define LogRelNoName(a)             LogRelIt(RTLOGGRPFLAGS_NONAME,   LOG_GROUP, a)
-
-
-/** @def LogRelMax
- * Level 1 logging.
- */
-#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, RTLOGGRPFLAGS_LEVEL_2,  LOG_GROUP, a)
-
-/** @def LogRelMax3
- * Level 3 logging.
- */
-#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, RTLOGGRPFLAGS_LEVEL_4,  LOG_GROUP, a)
-
-/** @def LogRelMax5
- * Level 5 logging.
- */
-#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, RTLOGGRPFLAGS_LEVEL_6,  LOG_GROUP, a)
-
-/** @def LogRelFlow
- * Logging of execution flow.
- */
-#define LogRelMaxFlow(a_cMax, a)    LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_FLOW,     LOG_GROUP, a)
-
-/** @def LogRelMaxFunc
- * Release logging.  Prepends the given log message with the function name
- * followed by a semicolon and space.
- */
-#ifdef LOG_USE_C99
-# define LogRelMaxFunc(a_cMax, a) \
-    _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", \
-                 __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-# define LogFuncMax(a_cMax, a) \
-    _LogItMax(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, LOG_FN_FMT ": %M", \
-              __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define LogRelMaxFunc(a_cMax, a) \
-    do { LogRelMax(a_cMax, (LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelMax(a_cMax, a); } while (0)
 #endif
 
@@ -1289,6 +1652,5 @@
 #ifdef LOG_USE_C99
 # define LogRelMaxThisFunc(a_cMax, a) \
-    _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", \
-                 this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
+    _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, "{%p} " LOG_FN_FMT ": %M", this, __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
 #else
 # define LogRelMaxThisFunc(a_cMax, a) \
@@ -1296,63 +1658,5 @@
 #endif
 
-/** @def LogRelMaxFlowFunc
- * Release logging.  Macro to log the execution flow inside C/C++ functions.
- *
- * Prepends the given log message with the function name followed by
- * a semicolon and space.
- *
- * @param   a_cMax  Max number of times this should hit the log.
- * @param   a       Log message in format <tt>("string\n" [, args])</tt>.
- */
-#ifdef LOG_USE_C99
-# define LogRelMaxFlowFunc(a_cMax, a) \
-    _LogRelMaxIt(a_cMax, RTLOGGRPFLAGS_FLOW, LOG_GROUP, LOG_FN_FMT ": %M", \
-                 __PRETTY_FUNCTION__, _LogRemoveParentheseis a )
-#else
-# define LogRelMaxFlowFunc(a_cMax, a) \
-    do { LogRelMaxFlow(a_cMax, (LOG_FN_FMT ": ", __PRETTY_FUNCTION__)); LogRelFlow(a_cMax, a); } while (0)
-#endif
-
-
-/** @def LogRelIsItEnabled
- * Checks whether the specified logging group is enabled or not.
- */
-#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(RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP)
-
-/** @def LogRelIs2Enabled
- * Checks whether level 2 logging is enabled.
- */
-#define LogRelIs2Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_2, LOG_GROUP)
-
-/** @def LogRelIs3Enabled
- * Checks whether level 3 logging is enabled.
- */
-#define LogRelIs3Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_3, LOG_GROUP)
-
-/** @def LogRelIs4Enabled
- * Checks whether level 4 logging is enabled.
- */
-#define LogRelIs4Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_4, LOG_GROUP)
-
-/** @def LogRelIs5Enabled
- * Checks whether level 5 logging is enabled.
- */
-#define LogRelIs5Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_5, LOG_GROUP)
-
-/** @def LogRelIs6Enabled
- * Checks whether level 6 logging is enabled.
- */
-#define LogRelIs6Enabled()     LogRelIsItEnabled(RTLOGGRPFLAGS_LEVEL_6, LOG_GROUP)
-
-/** @def LogRelIsFlowEnabled
- * Checks whether execution flow logging is enabled.
- */
-#define LogRelIsFlowEnabled()  LogRelIsItEnabled(RTLOGGRPFLAGS_FLOW, LOG_GROUP)
+/** @} */
 
 
@@ -1378,8 +1682,8 @@
  *
  * @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);
+ * @param   fFlagsAndGroup  The flags in the lower 16 bits, the group number in
+ *                          the high 16 bits.
+ */
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlagsAndGroup);
 
 /**
@@ -1568,8 +1872,8 @@
  * @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);
+ * @param   fFlagsAndGroup  The flags in the lower 16 bits, the group number in
+ *                          the high 16 bits.
+ */
+RTDECL(PRTLOGGER)   RTLogDefaultInstanceEx(uint32_t fFlagsAndGroup);
 
 /**
@@ -1585,8 +1889,8 @@
  * @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);
+ * @param   fFlagsAndGroup  The flags in the lower 16 bits, the group number in
+ *                          the high 16 bits.
+ */
+RTDECL(PRTLOGGER)   RTLogGetDefaultInstanceEx(uint32_t fFlagsAndGroup);
 
 #ifndef IN_RC
@@ -1613,23 +1917,4 @@
 RTDECL(int)         RTLogSetDefaultInstanceThread(PRTLOGGER pLogger, uintptr_t uKey);
 #endif /* IN_RING0 */
-
-
-#ifdef LOG_ENABLED
-/** Internal worker function.
- * Don't call directly, use the LogIsItEnabled macro!
- */
-DECLINLINE(bool)    LogIsItEnabledInternal(unsigned iGroup, unsigned fFlags)
-{
-    register PRTLOGGER pLogger = RTLogDefaultInstance();
-    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;
-}
-#endif
 
 
Index: /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku-stubs.c
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku-stubs.c	(revision 55987)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku-stubs.c	(revision 55988)
@@ -331,7 +331,7 @@
     return g_VBoxGuest->_RTLogDefaultInstance();
 }
-RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
-{
-    return g_VBoxGuest->_RTLogDefaultInstanceEx(fFlags, iGroup);
+RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlagsAndGroup)
+{
+    return g_VBoxGuest->_RTLogDefaultInstanceEx(fFlagsAndGroup);
 }
 RTDECL(PRTLOGGER) RTLogRelGetDefaultInstance(void)
Index: /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.h
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.h	(revision 55987)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest-haiku.h	(revision 55988)
@@ -180,7 +180,7 @@
     void (*_RTMemTmpFree)(void *pv);
     PRTLOGGER(*_RTLogDefaultInstance)(void);
-    PRTLOGGER(*_RTLogDefaultInstanceEx)(uint32_t fFlags, uint32_t iGroup);
+    PRTLOGGER(*_RTLogDefaultInstanceEx)(uint32_t fFlagsAndGroup);
     PRTLOGGER(*_RTLogRelGetDefaultInstance)(void);
-    PRTLOGGER(*_RTLogRelGetDefaultInstanceEx)(uint32_t fFlags, uint32_t iGroup);
+    PRTLOGGER(*_RTLogRelGetDefaultInstanceEx)(uint32_t fFlagsAndGroup);
     int (*_RTErrConvertToErrno)(int iErr);
     int (*_VbgdCommonIoCtl)(unsigned iFunction, PVBOXGUESTDEVEXT pDevExt, PVBOXGUESTSESSION pSession,
Index: /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibRuntimeXF86.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibRuntimeXF86.cpp	(revision 55987)
+++ /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibRuntimeXF86.cpp	(revision 55988)
@@ -65,7 +65,7 @@
 }
 
-RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlagsAndGroup)
 {
-    NOREF(fFlags); NOREF(iGroup);
+    NOREF(fFlagsAndGroup);
     return NULL;
 }
@@ -76,7 +76,7 @@
 }
 
-RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlagsAndGroup)
 {
-    NOREF(fFlags); NOREF(iGroup);
+    NOREF(fFlagsAndGroup);
     return NULL;
 }
Index: /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp	(revision 55987)
+++ /trunk/src/VBox/Frontends/VBoxSDL/VBoxSDL.cpp	(revision 55988)
@@ -2343,5 +2343,5 @@
                     default:
                     {
-                        LogBird(("VBoxSDL: Unknown SDL event %d (pre)\n", event.type));
+                        Log8(("VBoxSDL: Unknown SDL event %d (pre)\n", event.type));
                         break;
                     }
@@ -2905,5 +2905,5 @@
             default:
             {
-                LogBird(("unknown SDL event %d\n", event.type));
+                Log8(("unknown SDL event %d\n", event.type));
                 break;
             }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 55987)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 55988)
@@ -3220,6 +3220,5 @@
             if (!ok)
             {
-                LogWarningFunc (("Couldn't switch to desktop=%08X\n",
-                                 desktop));
+                Log1WarningFunc(("Couldn't switch to desktop=%08X\n", desktop));
                 result = false;
             }
@@ -3228,6 +3227,5 @@
         else
         {
-            LogWarningFunc (("Couldn't find a desktop ID for aWId=%08X\n",
-                             aWId));
+            Log1WarningFunc(("Couldn't find a desktop ID for aWId=%08X\n", aWId));
             result = false;
         }
@@ -3249,5 +3247,5 @@
 
     if (!result)
-        LogWarningFunc (("Couldn't activate aWId=%08X\n", aWId));
+        Log1WarningFunc(("Couldn't activate aWId=%08X\n", aWId));
 
     return result;
Index: /trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp	(revision 55987)
+++ /trunk/src/VBox/HostDrivers/Support/SUPDrv.cpp	(revision 55988)
@@ -233,5 +233,4 @@
     { "RTLogLoggerExV",                         (void *)RTLogLoggerExV },
     { "RTLogPrintfV",                           (void *)RTLogPrintfV },
-    { "RTLogRelDefaultInstance",                (void *)RTLogRelGetDefaultInstance },
     { "RTLogRelGetDefaultInstance",             (void *)RTLogRelGetDefaultInstance },
     { "RTLogRelGetDefaultInstanceEx",           (void *)RTLogRelGetDefaultInstanceEx },
Index: /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h	(revision 55987)
+++ /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h	(revision 55988)
@@ -213,7 +213,7 @@
  *
  * @todo Pending work on next major version change:
- *          - Remove RTLogRelDefaultInstance export from SUPDrv.cpp.
- */
-#define SUPDRV_IOC_VERSION                              0x00220001
+ *          - nothing.
+ */
+#define SUPDRV_IOC_VERSION                              0x00230000
 
 /** SUP_IOCTL_COOKIE. */
Index: /trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPLib.cpp	(revision 55987)
+++ /trunk/src/VBox/HostDrivers/Support/SUPLib.cpp	(revision 55988)
@@ -279,6 +279,6 @@
         strcpy(CookieReq.u.In.szMagic, SUPCOOKIE_MAGIC);
         CookieReq.u.In.u32ReqVersion = SUPDRV_IOC_VERSION;
-        const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00200000
-                                   ? 0x00200001
+        const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00230000
+                                   ? 0x00230000
                                    : SUPDRV_IOC_VERSION & 0xffff0000;
         CookieReq.u.In.u32MinVersion = uMinVersion;
Index: /trunk/src/VBox/Main/src-all/SharedFolderImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-all/SharedFolderImpl.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-all/SharedFolderImpl.cpp	(revision 55988)
@@ -364,5 +364,5 @@
                                        vrc);
 
-    LogWarningThisFunc(("m.lastAccessError=\"%s\"\n", m->strLastAccessError.c_str()));
+    Log1WarningThisFunc(("m.lastAccessError=\"%s\"\n", m->strLastAccessError.c_str()));
 
     *aAccessible = FALSE;
Index: /trunk/src/VBox/Main/src-all/VirtualBoxBase.cpp
===================================================================
--- /trunk/src/VBox/Main/src-all/VirtualBoxBase.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-all/VirtualBoxBase.cpp	(revision 55988)
@@ -324,6 +324,5 @@
              *  set the exception (nobody will be able to read it).
              */
-            LogWarningFunc(("Will not set an exception because nsIExceptionService is not available "
-                            "(NS_ERROR_UNEXPECTED). XPCOM is being shutdown?\n"));
+            Log1WarningFunc(("Will not set an exception because nsIExceptionService is not available (NS_ERROR_UNEXPECTED). XPCOM is being shutdown?\n"));
             rc = NS_OK;
         }
@@ -491,6 +490,5 @@
              *  set the exception (nobody will be able to read it).
              */
-            LogWarningFunc(("Will not set an exception because nsIExceptionService is not available "
-                            "(NS_ERROR_UNEXPECTED). XPCOM is being shutdown?\n"));
+            Log1WarningFunc(("Will not set an exception because nsIExceptionService is not available (NS_ERROR_UNEXPECTED). XPCOM is being shutdown?\n"));
             rc = NS_OK;
         }
Index: /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-client/ConsoleImpl.cpp	(revision 55988)
@@ -8657,6 +8657,5 @@
     else
     {
-        LogWarningThisFunc(("Failed to create proxy device for '%s' {%RTuuid} (%Rrc)\n",
-                            Address.c_str(), uuid.raw(), vrc));
+        Log1WarningThisFunc(("Failed to create proxy device for '%s' {%RTuuid} (%Rrc)\n", Address.c_str(), uuid.raw(), vrc));
 
         switch (vrc)
@@ -9330,6 +9329,5 @@
         if (cbDevList < e->oNext)
         {
-            LogWarningThisFunc(("cbDevList %d > oNext %d\n",
-                                 cbDevList, e->oNext));
+            Log1WarningThisFunc(("cbDevList %d > oNext %d\n", cbDevList, e->oNext));
             break;
         }
Index: /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp	(revision 55988)
@@ -364,6 +364,6 @@
                                                   ComSafeArrayIn(BYTE,inShape))
 {
-    LogSunlover(("VRDPConsoleListener::OnMousePointerShapeChange: %d, %d, %lux%lu, @%lu,%lu\n",
-                 visible, alpha, width, height, xHot, yHot));
+    Log9(("VRDPConsoleListener::OnMousePointerShapeChange: %d, %d, %lux%lu, @%lu,%lu\n",
+          visible, alpha, width, height, xHot, yHot));
 
     com::SafeArray <BYTE> aShape(ComSafeArrayInArg(inShape));
Index: /trunk/src/VBox/Main/src-client/DisplayImplLegacy.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DisplayImplLegacy.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-client/DisplayImplLegacy.cpp	(revision 55988)
@@ -55,8 +55,8 @@
     DISPLAYFBINFO *pInfo = pInfos;
     unsigned uScreenId;
-    LogSunlover(("mapCoordsToScreen: %d,%d %dx%d\n", *px, *py, *pw, *ph));
+    Log9(("mapCoordsToScreen: %d,%d %dx%d\n", *px, *py, *pw, *ph));
     for (uScreenId = 0; uScreenId < cInfos; uScreenId++, pInfo++)
     {
-        LogSunlover(("    [%d] %d,%d %dx%d\n", uScreenId, pInfo->xOrigin, pInfo->yOrigin, pInfo->w, pInfo->h));
+        Log9(("    [%d] %d,%d %dx%d\n", uScreenId, pInfo->xOrigin, pInfo->yOrigin, pInfo->w, pInfo->h));
         if (   (pInfo->xOrigin <= *px && *px < pInfo->xOrigin + (int)pInfo->w)
             && (pInfo->yOrigin <= *py && *py < pInfo->yOrigin + (int)pInfo->h))
@@ -65,5 +65,5 @@
             *px -= pInfo->xOrigin;
             *py -= pInfo->yOrigin;
-            LogSunlover(("    -> %d,%d", *px, *py));
+            Log9(("    -> %d,%d", *px, *py));
             break;
         }
@@ -74,5 +74,5 @@
         uScreenId = 0;
     }
-    LogSunlover((" scr %d\n", uScreenId));
+    Log9((" scr %d\n", uScreenId));
     return uScreenId;
 }
@@ -105,10 +105,10 @@
 static void vbvaRgnDirtyRect(VBVADIRTYREGION *prgn, unsigned uScreenId, VBVACMDHDR *phdr)
 {
-    LogSunlover(("x = %d, y = %d, w = %d, h = %d\n",
-                 phdr->x, phdr->y, phdr->w, phdr->h));
+    Log9(("x = %d, y = %d, w = %d, h = %d\n", phdr->x, phdr->y, phdr->w, phdr->h));
 
     /*
      * Here update rectangles are accumulated to form an update area.
-     * @todo
+     */
+    /** @todo
      * Now the simplest method is used which builds one rectangle that
      * includes all update areas. A bit more advanced method can be
Index: /trunk/src/VBox/Main/src-client/HGCM.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/HGCM.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-client/HGCM.cpp	(revision 55988)
@@ -1332,5 +1332,5 @@
     if (!pClient)
     {
-        LogWarningFunc(("Could not allocate HGCMClient!!!\n"));
+        Log1WarningFunc(("Could not allocate HGCMClient!!!\n"));
         return VERR_NO_MEMORY;
     }
Index: /trunk/src/VBox/Main/src-client/SessionImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/SessionImpl.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-client/SessionImpl.cpp	(revision 55988)
@@ -547,5 +547,5 @@
     else
     {
-        LogWarningThisFunc(("UNEXPECTED uninitialization!\n"));
+        Log1WarningThisFunc(("UNEXPECTED uninitialization!\n"));
         rc = autoCaller.rc();
     }
Index: /trunk/src/VBox/Main/src-client/VMMDevInterface.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/VMMDevInterface.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-client/VMMDevInterface.cpp	(revision 55988)
@@ -372,5 +372,5 @@
     if (display)
     {
-        LogSunlover(("MAIN::VMMDevInterface::iface_VideoAccelEnable: %d, %p\n", fEnable, pVbvaMemory));
+        Log9(("MAIN::VMMDevInterface::iface_VideoAccelEnable: %d, %p\n", fEnable, pVbvaMemory));
         return display->VideoAccelEnableVMMDev(fEnable, pVbvaMemory);
     }
@@ -387,5 +387,5 @@
     if (display)
     {
-        LogSunlover(("MAIN::VMMDevInterface::iface_VideoAccelFlush\n"));
+        Log9(("MAIN::VMMDevInterface::iface_VideoAccelFlush\n"));
         display->VideoAccelFlushVMMDev();
     }
@@ -606,5 +606,5 @@
                                            uint32_t *pu32ClientID)
 {
-    LogSunlover(("Enter\n"));
+    Log9(("Enter\n"));
 
     PDRVMAINVMMDEV pDrv = RT_FROM_MEMBER(pInterface, DRVMAINVMMDEV, HGCMConnector);
@@ -625,5 +625,5 @@
 static DECLCALLBACK(int) iface_hgcmDisconnect(PPDMIHGCMCONNECTOR pInterface, PVBOXHGCMCMD pCmd, uint32_t u32ClientID)
 {
-    LogSunlover(("Enter\n"));
+    Log9(("Enter\n"));
 
     PDRVMAINVMMDEV pDrv = RT_FROM_MEMBER(pInterface, DRVMAINVMMDEV, HGCMConnector);
@@ -638,5 +638,5 @@
                                         uint32_t u32Function, uint32_t cParms, PVBOXHGCMSVCPARM paParms)
 {
-    LogSunlover(("Enter\n"));
+    Log9(("Enter\n"));
 
     PDRVMAINVMMDEV pDrv = RT_FROM_MEMBER(pInterface, DRVMAINVMMDEV, HGCMConnector);
@@ -657,5 +657,5 @@
 static DECLCALLBACK(int) iface_hgcmSave(PPDMDRVINS pDrvIns, PSSMHANDLE pSSM)
 {
-    LogSunlover(("Enter\n"));
+    Log9(("Enter\n"));
     return HGCMHostSaveState(pSSM);
 }
Index: /trunk/src/VBox/Main/src-server/ApplianceImplImport.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/ApplianceImplImport.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-server/ApplianceImplImport.cpp	(revision 55988)
@@ -3183,6 +3183,6 @@
                     {
                         /* possible case if a disk image belongs to other virtual system (OVF package with multiple VMs inside) */
-                        LogWarning(("OVA/OVF import: Disk image %s was missed during import of VM %s\n",
-                                    oit->first.c_str(), vmNameEntry->strOvf.c_str()));
+                        Log1Warning(("OVA/OVF import: Disk image %s was missed during import of VM %s\n",
+                                     oit->first.c_str(), vmNameEntry->strOvf.c_str()));
                         NOREF(vmNameEntry);
                         ++oit;
@@ -3405,6 +3405,6 @@
             if(cImportedDisks < avsdeHDs.size())
             {
-                LogWarning(("Not all disk images were imported for VM %s. Check OVF description file.",
-                            vmNameEntry->strOvf.c_str()));
+                Log1Warning(("Not all disk images were imported for VM %s. Check OVF description file.",
+                             vmNameEntry->strOvf.c_str()));
             }
 
@@ -3689,6 +3689,6 @@
             {
                 /* possible case if a disk image belongs to other virtual system (OVF package with multiple VMs inside) */
-                LogWarning(("OVA/OVF import: Disk image %s was missed during import of VM %s\n",
-                            oit->first.c_str(), vmNameEntry->strOvf.c_str()));
+                Log1Warning(("OVA/OVF import: Disk image %s was missed during import of VM %s\n",
+                             oit->first.c_str(), vmNameEntry->strOvf.c_str()));
                 NOREF(vmNameEntry);
                 ++oit;
@@ -3934,6 +3934,6 @@
     if(cImportedDisks < avsdeHDs.size())
     {
-        LogWarning(("Not all disk images were imported for VM %s. Check OVF description file.",
-                    vmNameEntry->strOvf.c_str()));
+        Log1Warning(("Not all disk images were imported for VM %s. Check OVF description file.",
+                     vmNameEntry->strOvf.c_str()));
     }
 
Index: /trunk/src/VBox/Main/src-server/MachineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 55988)
@@ -761,7 +761,5 @@
         /* fetch the current error info */
         mData->mAccessError = com::ErrorInfo();
-        LogWarning(("Machine {%RTuuid} is inaccessible! [%ls]\n",
-                    mData->mUuid.raw(),
-                    mData->mAccessError.getText().raw()));
+        Log1Warning(("Machine {%RTuuid} is inaccessible! [%ls]\n", mData->mUuid.raw(), mData->mAccessError.getText().raw()));
 
         /* rollback all changes */
@@ -838,10 +836,10 @@
          * still valid). We'll call it ourselves below.
          */
-        LogWarningThisFunc(("Session machine is not NULL (%p), the direct session is still open!\n",
-                            (SessionMachine*)mData->mSession.mMachine));
+        Log1WarningThisFunc(("Session machine is not NULL (%p), the direct session is still open!\n",
+                             (SessionMachine*)mData->mSession.mMachine));
 
         if (Global::IsOnlineOrTransient(mData->mMachineState))
         {
-            LogWarningThisFunc(("Setting state to Aborted!\n"));
+            Log1WarningThisFunc(("Setting state to Aborted!\n"));
             /* set machine state using SessionMachine reimplementation */
             static_cast<Machine*>(mData->mSession.mMachine)->i_setMachineState(MachineState_Aborted);
@@ -874,5 +872,5 @@
     if (mData->flModifications)
     {
-        LogWarningThisFunc(("Discarding unsaved settings changes!\n"));
+        Log1WarningThisFunc(("Discarding unsaved settings changes!\n"));
         i_rollback(false /* aNotify */);
     }
@@ -4974,6 +4972,5 @@
             const char *sep = error.isEmpty() ? "" : ": ";
             CBSTR err = error.raw();
-            LogWarningFunc(("Someone vetoed! Change refused%s%ls\n",
-                            sep, err));
+            Log1WarningFunc(("Someone vetoed! Change refused%s%ls\n", sep, err));
             return setError(E_ACCESSDENIED,
                             tr("Could not set extra data because someone refused the requested change of '%s' to '%s'%s%ls"),
@@ -12194,6 +12191,5 @@
     mCollectorGuest = new pm::CollectorGuest(aMachine, pid);
     aCollector->registerGuest(mCollectorGuest);
-    LogAleksey(("{%p} " LOG_FN_FMT ": mCollectorGuest=%p\n",
-                this, __PRETTY_FUNCTION__, mCollectorGuest));
+    Log7(("{%p} " LOG_FN_FMT ": mCollectorGuest=%p\n", this, __PRETTY_FUNCTION__, mCollectorGuest));
 
     /* Create sub metrics */
@@ -12546,6 +12542,5 @@
     i_unregisterMetrics(mParent->i_performanceCollector(), mPeer);
     /* The guest must be unregistered after its metrics (@bugref{5949}). */
-    LogAleksey(("{%p} " LOG_FN_FMT ": mCollectorGuest=%p\n",
-                this, __PRETTY_FUNCTION__, mCollectorGuest));
+    Log7(("{%p} " LOG_FN_FMT ": mCollectorGuest=%p\n", this, __PRETTY_FUNCTION__, mCollectorGuest));
     if (mCollectorGuest)
     {
@@ -12558,6 +12553,5 @@
     if (aReason == Uninit::Abnormal)
     {
-        LogWarningThisFunc(("ABNORMAL client termination! (wasBusy=%d)\n",
-                             Global::IsOnlineOrTransient(lastState)));
+        Log1WarningThisFunc(("ABNORMAL client termination! (wasBusy=%d)\n", Global::IsOnlineOrTransient(lastState)));
 
         /* reset the state to Aborted */
@@ -12569,5 +12563,5 @@
     if (mData->flModifications)
     {
-        LogWarningThisFunc(("Discarding unsaved settings changes!\n"));
+        Log1WarningThisFunc(("Discarding unsaved settings changes!\n"));
         i_rollback(false /* aNotify */);
     }
@@ -12597,5 +12591,5 @@
             LogFlowThisFunc(("  remoteControl->Uninitialize() returned %08X\n", rc));
             if (FAILED(rc))
-                LogWarningThisFunc(("Forgot to close the remote session?\n"));
+                Log1WarningThisFunc(("Forgot to close the remote session?\n"));
             ++it;
         }
@@ -12643,5 +12637,5 @@
 
     if ((aReason == Uninit::Unexpected))
-        LogWarningThisFunc(("Unexpected SessionMachine uninitialization!\n"));
+        Log1WarningThisFunc(("Unexpected SessionMachine uninitialization!\n"));
 
     if (aReason != Uninit::Normal)
Index: /trunk/src/VBox/Main/src-server/MediumImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MediumImpl.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-server/MediumImpl.cpp	(revision 55988)
@@ -6444,7 +6444,6 @@
     {
         m->strLastAccessError = lastAccessError;
-        LogWarningFunc(("'%s' is not accessible (error='%s', rc=%Rhrc, vrc=%Rrc)\n",
-                        location.c_str(), m->strLastAccessError.c_str(),
-                        rc, vrc));
+        Log1WarningFunc(("'%s' is not accessible (error='%s', rc=%Rhrc, vrc=%Rrc)\n",
+                         location.c_str(), m->strLastAccessError.c_str(), rc, vrc));
     }
 
Index: /trunk/src/VBox/Main/src-server/Performance.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/Performance.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-server/Performance.cpp	(revision 55988)
@@ -115,15 +115,12 @@
     for (RTCPUID iCpu = 0; iCpu < RTCPUSET_MAX_CPUS; iCpu++)
     {
-        LogAleksey(("{%p} " LOG_FN_FMT ": Checking if CPU %d is member of online set...\n",
-                    this, __PRETTY_FUNCTION__, (int)iCpu));
+        Log7(("{%p} " LOG_FN_FMT ": Checking if CPU %d is member of online set...\n", this, __PRETTY_FUNCTION__, (int)iCpu));
         if (RTCpuSetIsMemberByIndex(&OnlineSet, iCpu))
         {
-            LogAleksey(("{%p} " LOG_FN_FMT ": Getting frequency for CPU %d...\n",
-                        this, __PRETTY_FUNCTION__, (int)iCpu));
+            Log7(("{%p} " LOG_FN_FMT ": Getting frequency for CPU %d...\n", this, __PRETTY_FUNCTION__, (int)iCpu));
             uint32_t uMHz = RTMpGetCurFrequency(RTMpCpuIdFromSetIndex(iCpu));
             if (uMHz != 0)
             {
-                LogAleksey(("{%p} " LOG_FN_FMT ": CPU %d %u MHz\n",
-                            this, __PRETTY_FUNCTION__, (int)iCpu, uMHz));
+                Log7(("{%p} " LOG_FN_FMT ": CPU %d %u MHz\n", this, __PRETTY_FUNCTION__, (int)iCpu, uMHz));
                 u64TotalMHz += uMHz;
                 cCpus++;
@@ -197,6 +194,5 @@
     NOREF(aFunction);
     NOREF(aText);
-    LogAleksey(("{%p} " LOG_FN_FMT ": CGRQEnable(mask=0x%x) %s\n",
-                aObject, aFunction, mMask, aText));
+    Log7(("{%p} " LOG_FN_FMT ": CGRQEnable(mask=0x%x) %s\n", aObject, aFunction, mMask, aText));
 }
 
@@ -212,6 +208,5 @@
     NOREF(aFunction);
     NOREF(aText);
-    LogAleksey(("{%p} " LOG_FN_FMT ": CGRQDisable(mask=0x%x) %s\n",
-                aObject, aFunction, mMask, aText));
+    Log7(("{%p} " LOG_FN_FMT ": CGRQDisable(mask=0x%x) %s\n", aObject, aFunction, mMask, aText));
 }
 
@@ -226,6 +221,5 @@
     NOREF(aFunction);
     NOREF(aText);
-    LogAleksey(("{%p} " LOG_FN_FMT ": CGRQAbort %s\n",
-                aObject, aFunction, aText));
+    Log7(("{%p} " LOG_FN_FMT ": CGRQAbort %s\n", aObject, aFunction, aText));
 }
 
@@ -266,7 +260,6 @@
         /* enable statistics collection; this is a remote call (!) */
         ret = directControl->EnableVMMStatistics(mCollectVMMStats);
-        LogAleksey(("{%p} " LOG_FN_FMT ": %sable VMM stats (%s)\n",
-                    this, __PRETTY_FUNCTION__, mCollectVMMStats?"En":"Dis",
-                    SUCCEEDED(ret)?"success":"failed"));
+        Log7(("{%p} " LOG_FN_FMT ": %sable VMM stats (%s)\n",
+              this, __PRETTY_FUNCTION__, mCollectVMMStats ? "En" : "Dis", SUCCEEDED(ret) ? "success" : "failed"));
     }
 
@@ -319,6 +312,6 @@
         {
             ret = mGuest->COMSETTER(StatisticsUpdateInterval)(1 /* 1 sec */);
-            LogAleksey(("{%p} " LOG_FN_FMT ": Set guest statistics update interval to 1 sec (%s)\n",
-                        this, __PRETTY_FUNCTION__, SUCCEEDED(ret)?"success":"failed"));
+            Log7(("{%p} " LOG_FN_FMT ": Set guest statistics update interval to 1 sec (%s)\n",
+                  this, __PRETTY_FUNCTION__, SUCCEEDED(ret) ? "success" : "failed"));
         }
     }
@@ -343,6 +336,6 @@
         HRESULT ret = mGuest->COMSETTER(StatisticsUpdateInterval)(0 /* off */);
         NOREF(ret);
-        LogAleksey(("{%p} " LOG_FN_FMT ": Set guest statistics update interval to 0 sec (%s)\n",
-                    this, __PRETTY_FUNCTION__, SUCCEEDED(ret)?"success":"failed"));
+        Log7(("{%p} " LOG_FN_FMT ": Set guest statistics update interval to 0 sec (%s)\n",
+              this, __PRETTY_FUNCTION__, SUCCEEDED(ret) ? "success" : "failed"));
         invalidate(VMSTATS_ALL);
     }
@@ -359,6 +352,5 @@
     }
 
-    LogAleksey(("{%p} " LOG_FN_FMT ": Attempted enqueue guest request when mManager is null\n",
-                this, __PRETTY_FUNCTION__));
+    Log7(("{%p} " LOG_FN_FMT ": Attempted enqueue guest request when mManager is null\n", this, __PRETTY_FUNCTION__));
     return E_POINTER;
 }
@@ -410,6 +402,5 @@
                             "CGMgr");
     NOREF(rc);
-    LogAleksey(("{%p} " LOG_FN_FMT ": RTThreadCreate returned %u (mThread=%p)\n",
-                this, __PRETTY_FUNCTION__, rc));
+    Log7(("{%p} " LOG_FN_FMT ": RTThreadCreate returned %u (mThread=%p)\n", this, __PRETTY_FUNCTION__, rc));
 }
 
@@ -422,9 +413,7 @@
     {
         /* We wait only if we were able to put the abort request to a queue */
-        LogAleksey(("{%p} " LOG_FN_FMT ": Waiting for CGM request processing thread to stop...\n",
-                    this, __PRETTY_FUNCTION__));
+        Log7(("{%p} " LOG_FN_FMT ": Waiting for CGM request processing thread to stop...\n", this, __PRETTY_FUNCTION__));
         rc = RTThreadWait(mThread, 1000 /* 1 sec */, &rcThread);
-        LogAleksey(("{%p} " LOG_FN_FMT ": RTThreadWait returned %u (thread exit code: %u)\n",
-                    this, __PRETTY_FUNCTION__, rc, rcThread));
+        Log7(("{%p} " LOG_FN_FMT ": RTThreadWait returned %u (thread exit code: %u)\n", this, __PRETTY_FUNCTION__, rc, rcThread));
     }
 }
@@ -440,6 +429,5 @@
     if (!mVMMStatsProvider)
         mVMMStatsProvider = pGuest;
-    LogAleksey(("{%p} " LOG_FN_FMT ": Registered guest=%p provider=%p\n",
-                this, __PRETTY_FUNCTION__, pGuest, mVMMStatsProvider));
+    Log7(("{%p} " LOG_FN_FMT ": Registered guest=%p provider=%p\n", this, __PRETTY_FUNCTION__, pGuest, mVMMStatsProvider));
 }
 
@@ -448,6 +436,5 @@
     int rc = S_OK;
 
-    LogAleksey(("{%p} " LOG_FN_FMT ": About to unregister guest=%p provider=%p\n",
-                this, __PRETTY_FUNCTION__, pGuest, mVMMStatsProvider));
+    Log7(("{%p} " LOG_FN_FMT ": About to unregister guest=%p provider=%p\n", this, __PRETTY_FUNCTION__, pGuest, mVMMStatsProvider));
     //mGuests.remove(pGuest); => destroyUnregistered()
     pGuest->unregister();
@@ -498,6 +485,5 @@
         }
     }
-    LogAleksey(("{%p} " LOG_FN_FMT ": LEAVE new provider=%p\n",
-                this, __PRETTY_FUNCTION__, mVMMStatsProvider));
+    Log7(("{%p} " LOG_FN_FMT ": LEAVE new provider=%p\n", this, __PRETTY_FUNCTION__, mVMMStatsProvider));
 }
 
@@ -511,6 +497,6 @@
             delete *it;
             it = mGuests.erase(it);
-            LogAleksey(("{%p} " LOG_FN_FMT ": Number of guests after erasing unregistered is %d\n",
-                        this, __PRETTY_FUNCTION__, mGuests.size()));
+            Log7(("{%p} " LOG_FN_FMT ": Number of guests after erasing unregistered is %d\n",
+                  this, __PRETTY_FUNCTION__, mGuests.size()));
         }
         else
@@ -537,12 +523,10 @@
          * and is barely noticable by humans.
          */
-        LogAleksey(("{%p} " LOG_FN_FMT ": Suspecting %s is stalled. Waiting for .5 sec...\n",
-                    this, __PRETTY_FUNCTION__,
-                    aRequest->getGuest()->getVMName().c_str()));
+        Log7(("{%p} " LOG_FN_FMT ": Suspecting %s is stalled. Waiting for .5 sec...\n",
+              this, __PRETTY_FUNCTION__, aRequest->getGuest()->getVMName().c_str()));
         RTThreadSleep(500 /* ms */);
         if (aRequest->getGuest() == mGuestBeingCalled) {
-            LogAleksey(("{%p} " LOG_FN_FMT ": Request processing stalled for %s\n",
-                        this, __PRETTY_FUNCTION__,
-                        aRequest->getGuest()->getVMName().c_str()));
+            Log7(("{%p} " LOG_FN_FMT ": Request processing stalled for %s\n",
+                  this, __PRETTY_FUNCTION__, aRequest->getGuest()->getVMName().c_str()));
             /* Request execution got stalled for this guest -- report an error */
             return E_FAIL;
@@ -561,6 +545,5 @@
     HRESULT rc = S_OK;
 
-    LogAleksey(("{%p} " LOG_FN_FMT ": Starting request processing loop...\n",
-                mgr, __PRETTY_FUNCTION__));
+    Log7(("{%p} " LOG_FN_FMT ": Starting request processing loop...\n", mgr, __PRETTY_FUNCTION__));
     while ((pReq = mgr->mQueue.pop()) != NULL)
     {
@@ -575,9 +558,7 @@
             break;
         if (FAILED(rc))
-            LogAleksey(("{%p} " LOG_FN_FMT ": request::execute returned %u\n",
-                        mgr, __PRETTY_FUNCTION__, rc));
-    }
-    LogAleksey(("{%p} " LOG_FN_FMT ": Exiting request processing loop... rc=%u\n",
-                        mgr, __PRETTY_FUNCTION__, rc));
+            Log7(("{%p} " LOG_FN_FMT ": request::execute returned %u\n", mgr, __PRETTY_FUNCTION__, rc));
+    }
+    Log7(("{%p} " LOG_FN_FMT ": Exiting request processing loop... rc=%u\n", mgr, __PRETTY_FUNCTION__, rc));
 
     return VINF_SUCCESS;
@@ -968,7 +949,6 @@
     if (provider)
     {
-        LogAleksey(("{%p} " LOG_FN_FMT ": provider=%p enabled=%s valid=%s...\n",
-                    this, __PRETTY_FUNCTION__, provider, provider->isEnabled()?"y":"n",
-                    provider->isValid(VMSTATS_VMM_RAM)?"y":"n"));
+        Log7(("{%p} " LOG_FN_FMT ": provider=%p enabled=%RTbool valid=%RTbool...\n",
+              this, __PRETTY_FUNCTION__, provider, provider->isEnabled(), provider->isValid(VMSTATS_VMM_RAM) ));
         if (provider->isValid(VMSTATS_VMM_RAM))
         {
@@ -993,7 +973,6 @@
         mSharedCurrent    = 0;
     }
-    LogAleksey(("{%p} " LOG_FN_FMT ": mAllocCurrent=%u mFreeCurrent=%u mBalloonedCurrent=%u mSharedCurrent=%u\n",
-                this, __PRETTY_FUNCTION__,
-                mAllocCurrent, mFreeCurrent, mBalloonedCurrent, mSharedCurrent));
+    Log7(("{%p} " LOG_FN_FMT ": mAllocCurrent=%u mFreeCurrent=%u mBalloonedCurrent=%u mSharedCurrent=%u\n",
+          this, __PRETTY_FUNCTION__, mAllocCurrent, mFreeCurrent, mBalloonedCurrent, mSharedCurrent));
     mAllocVMM->put(mAllocCurrent);
     mFreeVMM->put(mFreeCurrent);
@@ -1532,8 +1511,8 @@
     ElementList::const_iterator it;
 
-    //LogAleksey(("Filter::match(%p, %s)\n", static_cast<const IUnknown*> (object), name.c_str()));
+    //Log7(("Filter::match(%p, %s)\n", static_cast<const IUnknown*> (object), name.c_str()));
     for (it = mElements.begin(); it != mElements.end(); ++it)
     {
-        //LogAleksey(("...matching against(%p, %s)\n", static_cast<const IUnknown*> ((*it).first), (*it).second.c_str()));
+        //Log7(("...matching against(%p, %s)\n", static_cast<const IUnknown*> ((*it).first), (*it).second.c_str()));
         if ((*it).first.isNull() || (*it).first == object)
         {
@@ -1546,5 +1525,5 @@
         }
     }
-    //LogAleksey(("...no matches!\n"));
+    //Log7(("...no matches!\n"));
     return false;
 }
Index: /trunk/src/VBox/Main/src-server/PerformanceImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/PerformanceImpl.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-server/PerformanceImpl.cpp	(revision 55988)
@@ -582,6 +582,6 @@
 
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
-    LogAleksey(("{%p} " LOG_FN_FMT ": obj=%p name=%s\n", this, __PRETTY_FUNCTION__,
-                (void *)baseMetric->getObject(), baseMetric->getName()));
+    Log7(("{%p} " LOG_FN_FMT ": obj=%p name=%s\n", this, __PRETTY_FUNCTION__,
+          (void *)baseMetric->getObject(), baseMetric->getName()));
     m.baseMetrics.push_back (baseMetric);
     //LogFlowThisFuncLeave();
@@ -595,6 +595,5 @@
 
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
-    LogAleksey(("{%p} " LOG_FN_FMT ": obj=%p name=%s\n", this, __PRETTY_FUNCTION__,
-                (void *)metric->getObject(), metric->getName()));
+    Log7(("{%p} " LOG_FN_FMT ": obj=%p name=%s\n", this, __PRETTY_FUNCTION__, (void *)metric->getObject(), metric->getName()));
     m.metrics.push_back (metric);
     //LogFlowThisFuncLeave();
@@ -618,6 +617,6 @@
             ++n;
         }
-    LogAleksey(("{%p} " LOG_FN_FMT ": obj=%p, name=%s, marked %d metrics\n",
-                this, __PRETTY_FUNCTION__, (void *)aObject, name.c_str(), n));
+    Log7(("{%p} " LOG_FN_FMT ": obj=%p, name=%s, marked %d metrics\n",
+          this, __PRETTY_FUNCTION__, (void *)aObject, name.c_str(), n));
     //LogFlowThisFuncLeave();
 }
@@ -632,6 +631,5 @@
 
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
-    LogAleksey(("{%p} " LOG_FN_FMT ": obj=%p, name=%s\n", this,
-                __PRETTY_FUNCTION__, (void *)aObject, name.c_str()));
+    Log7(("{%p} " LOG_FN_FMT ": obj=%p, name=%s\n", this, __PRETTY_FUNCTION__, (void *)aObject, name.c_str()));
     MetricList::iterator it;
     for (it = m.metrics.begin(); it != m.metrics.end();)
@@ -756,11 +754,8 @@
      * Those should be destroyed now.
      */
-    LogAleksey(("{%p} " LOG_FN_FMT ": before remove_if: toBeCollected.size()=%d\n", this, __PRETTY_FUNCTION__,
-                toBeCollected.size()));
+    Log7(("{%p} " LOG_FN_FMT ": before remove_if: toBeCollected.size()=%d\n", this, __PRETTY_FUNCTION__, toBeCollected.size()));
     toBeCollected.remove_if(std::mem_fun(&pm::BaseMetric::isUnregistered));
-    LogAleksey(("{%p} " LOG_FN_FMT ": after remove_if: toBeCollected.size()=%d\n", this, __PRETTY_FUNCTION__,
-                toBeCollected.size()));
-    LogAleksey(("{%p} " LOG_FN_FMT ": before remove_if: m.baseMetrics.size()=%d\n", this, __PRETTY_FUNCTION__,
-                m.baseMetrics.size()));
+    Log7(("{%p} " LOG_FN_FMT ": after remove_if: toBeCollected.size()=%d\n", this, __PRETTY_FUNCTION__, toBeCollected.size()));
+    Log7(("{%p} " LOG_FN_FMT ": before remove_if: m.baseMetrics.size()=%d\n", this, __PRETTY_FUNCTION__, m.baseMetrics.size()));
     for (it = m.baseMetrics.begin(); it != m.baseMetrics.end();)
         if ((*it)->isUnregistered())
@@ -771,6 +766,5 @@
         else
             ++it;
-    LogAleksey(("{%p} " LOG_FN_FMT ": after remove_if: m.baseMetrics.size()=%d\n", this, __PRETTY_FUNCTION__,
-                m.baseMetrics.size()));
+    Log7(("{%p} " LOG_FN_FMT ": after remove_if: m.baseMetrics.size()=%d\n", this, __PRETTY_FUNCTION__, m.baseMetrics.size()));
     /*
      * Now when we have destroyed all base metrics that could
Index: /trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp	(revision 55988)
@@ -803,6 +803,5 @@
             int vrc = RTThreadWait(m->threadAsyncEvent, 60000, NULL);
             if (RT_FAILURE(vrc))
-                LogWarningFunc(("RTThreadWait(%RTthrd) -> %Rrc\n",
-                                m->threadAsyncEvent, vrc));
+                Log1WarningFunc(("RTThreadWait(%RTthrd) -> %Rrc\n", m->threadAsyncEvent, vrc));
         }
         else
@@ -2006,6 +2005,5 @@
             const char *sep = error.isEmpty() ? "" : ": ";
             CBSTR err = error.raw();
-            LogWarningFunc(("Someone vetoed! Change refused%s%ls\n",
-                            sep, err));
+            Log1WarningFunc(("Someone vetoed! Change refused%s%ls\n", sep, err));
             return setError(E_ACCESSDENIED,
                             tr("Could not set extra data because someone refused the requested change of '%s' to '%s'%s%ls"),
@@ -2304,6 +2302,6 @@
     {
         if (getObjectState().getState() != ObjectState::Ready)
-            LogWarningFunc(("VirtualBox has been uninitialized (state=%d), the event is discarded!\n",
-                            getObjectState().getState()));
+            Log1WarningFunc(("VirtualBox has been uninitialized (state=%d), the event is discarded!\n",
+                             getObjectState().getState()));
             // return S_OK
         else if (    (m->pAsyncEventQ)
@@ -4820,6 +4818,6 @@
     if (!autoCaller.isOk())
     {
-        LogWarningFunc(("VirtualBox has been uninitialized (state=%d), the callback event is discarded!\n",
-                        mVirtualBox->getObjectState().getState()));
+        Log1WarningFunc(("VirtualBox has been uninitialized (state=%d), the callback event is discarded!\n",
+                         mVirtualBox->getObjectState().getState()));
         /* We don't need mVirtualBox any more, so release it */
         mVirtualBox = NULL;
Index: /trunk/src/VBox/Main/src-server/darwin/PerformanceDarwin.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/darwin/PerformanceDarwin.cpp	(revision 55987)
+++ /trunk/src/VBox/Main/src-server/darwin/PerformanceDarwin.cpp	(revision 55988)
@@ -130,5 +130,5 @@
 static int getProcessInfo(RTPROCESS process, struct proc_taskinfo *tinfo)
 {
-    LogAleksey(("getProcessInfo() getting info for %d", process));
+    Log7(("getProcessInfo() getting info for %d", process));
     int nb = proc_pidinfo(process, PROC_PIDTASKINFO, 0,  tinfo, sizeof(*tinfo));
     if (nb <= 0)
Index: /trunk/src/VBox/NetworkServices/NetLib/VBoxNetBaseService.cpp
===================================================================
--- /trunk/src/VBox/NetworkServices/NetLib/VBoxNetBaseService.cpp	(revision 55987)
+++ /trunk/src/VBox/NetworkServices/NetLib/VBoxNetBaseService.cpp	(revision 55988)
@@ -473,5 +473,5 @@
                 rc = RTThreadWait(m->m_hThrRecv, 60000, NULL);
                 if (RT_FAILURE(rc))
-                    LogWarningFunc(("RTThreadWait(%RTthrd) -> %Rrc\n", m->m_hThrRecv, rc));
+                    Log1WarningFunc(("RTThreadWait(%RTthrd) -> %Rrc\n", m->m_hThrRecv, rc));
             }
             else
Index: /trunk/src/VBox/Runtime/VBox/logbackdoor-redirect.cpp
===================================================================
--- /trunk/src/VBox/Runtime/VBox/logbackdoor-redirect.cpp	(revision 55987)
+++ /trunk/src/VBox/Runtime/VBox/logbackdoor-redirect.cpp	(revision 55988)
@@ -44,5 +44,5 @@
 
 /* All release logging goes to the backdoor logger anyway. */
-RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+RTDECL(PRTLOGGER) RTLogRelGetDefaultInstanceEx(uint32_t fFlagsAndGroup)
 {
     return NULL;
@@ -58,5 +58,5 @@
 
 /* All logging goes to the backdoor logger anyway. */
-RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+RTDECL(PRTLOGGER) RTLogDefaultInstanceEx(uint32_t fFlagsAndGroup)
 {
     return NULL;
Index: /trunk/src/VBox/Runtime/common/log/log.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/log/log.cpp	(revision 55987)
+++ /trunk/src/VBox/Runtime/common/log/log.cpp	(revision 55988)
@@ -1788,6 +1788,6 @@
             { "eo",         RTLOGGRPFLAGS_ENABLED },
             { "enabledonly",RTLOGGRPFLAGS_ENABLED },
-            { "e",          RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 },
-            { "enabled",    RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 },
+            { "e",          RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 | RTLOGGRPFLAGS_WARN },
+            { "enabled",    RTLOGGRPFLAGS_ENABLED | RTLOGGRPFLAGS_LEVEL_1 | RTLOGGRPFLAGS_WARN },
             { "l1",         RTLOGGRPFLAGS_LEVEL_1 },
             { "level1",     RTLOGGRPFLAGS_LEVEL_1 },
@@ -1803,24 +1803,23 @@
             { "l6",         RTLOGGRPFLAGS_LEVEL_6 },
             { "level6",     RTLOGGRPFLAGS_LEVEL_6 },
+            { "l7",         RTLOGGRPFLAGS_LEVEL_7 },
+            { "level7",     RTLOGGRPFLAGS_LEVEL_7 },
+            { "l8",         RTLOGGRPFLAGS_LEVEL_8 },
+            { "level8",     RTLOGGRPFLAGS_LEVEL_8 },
+            { "l9",         RTLOGGRPFLAGS_LEVEL_9 },
+            { "level9",     RTLOGGRPFLAGS_LEVEL_9 },
+            { "l10",        RTLOGGRPFLAGS_LEVEL_10 },
+            { "level10",    RTLOGGRPFLAGS_LEVEL_10 },
+            { "l11",        RTLOGGRPFLAGS_LEVEL_11 },
+            { "level11",    RTLOGGRPFLAGS_LEVEL_11 },
+            { "l12",        RTLOGGRPFLAGS_LEVEL_12 },
+            { "level12",    RTLOGGRPFLAGS_LEVEL_12 },
             { "f",          RTLOGGRPFLAGS_FLOW },
             { "flow",       RTLOGGRPFLAGS_FLOW },
+            { "w",          RTLOGGRPFLAGS_WARN },
+            { "warn",       RTLOGGRPFLAGS_WARN },
+            { "warning",    RTLOGGRPFLAGS_WARN },
             { "restrict",   RTLOGGRPFLAGS_RESTRICT },
 
-            { "lelik",      RTLOGGRPFLAGS_LELIK },
-            { "michael",    RTLOGGRPFLAGS_MICHAEL },
-            { "sunlover",   RTLOGGRPFLAGS_SUNLOVER },
-            { "achim",      RTLOGGRPFLAGS_ACHIM },
-            { "achimha",    RTLOGGRPFLAGS_ACHIM },
-            { "s",          RTLOGGRPFLAGS_SANDER },
-            { "sander",     RTLOGGRPFLAGS_SANDER },
-            { "sandervl",   RTLOGGRPFLAGS_SANDER },
-            { "klaus",      RTLOGGRPFLAGS_KLAUS },
-            { "frank",      RTLOGGRPFLAGS_FRANK },
-            { "b",          RTLOGGRPFLAGS_BIRD },
-            { "bird",       RTLOGGRPFLAGS_BIRD },
-            { "aleksey",    RTLOGGRPFLAGS_ALEKSEY },
-            { "dj",         RTLOGGRPFLAGS_DJ },
-            { "n",          RTLOGGRPFLAGS_NONAME },
-            { "noname",     RTLOGGRPFLAGS_NONAME }
         };
         unsigned    i;
@@ -2615,5 +2614,5 @@
 
 
-RTDECL(PRTLOGGER)   RTLogDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+RTDECL(PRTLOGGER)   RTLogDefaultInstanceEx(uint32_t fFlagsAndGroup)
 {
     PRTLOGGER pLogger = rtLogDefaultInstanceCommon();
@@ -2622,8 +2621,13 @@
         if (pLogger->fFlags & RTLOGFLAGS_DISABLED)
             pLogger = NULL;
-        else if (   iGroup != UINT32_MAX
+        else
+        {
+            uint16_t const fFlags = RT_LO_U16(fFlagsAndGroup);
+            uint16_t const iGroup = RT_HI_U16(fFlagsAndGroup);
+            if (   iGroup != UINT16_MAX
                  && (   (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED))
                      != (fFlags | RTLOGGRPFLAGS_ENABLED)))
             pLogger = NULL;
+        }
     }
     return pLogger;
@@ -2666,5 +2670,5 @@
 
 
-RTDECL(PRTLOGGER) RTLogGetDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+RTDECL(PRTLOGGER) RTLogGetDefaultInstanceEx(uint32_t fFlagsAndGroup)
 {
     PRTLOGGER pLogger = rtLogGetDefaultInstanceCommon();
@@ -2673,8 +2677,13 @@
         if (pLogger->fFlags & RTLOGFLAGS_DISABLED)
             pLogger = NULL;
-        else if (   iGroup != UINT32_MAX
+        else
+        {
+            uint16_t const fFlags = RT_LO_U16(fFlagsAndGroup);
+            uint16_t const iGroup = RT_HI_U16(fFlagsAndGroup);
+            if (   iGroup != UINT16_MAX
                  && (   (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED))
                      != (fFlags | RTLOGGRPFLAGS_ENABLED)))
             pLogger = NULL;
+        }
     }
     return pLogger;
@@ -3758,16 +3767,12 @@
                         case RTLOGGRPFLAGS_LEVEL_5:     pszGroup = "level 5" ;  cch = sizeof("level 5" ) - 1; break;
                         case RTLOGGRPFLAGS_LEVEL_6:     pszGroup = "level 6" ;  cch = sizeof("level 6" ) - 1; break;
+                        case RTLOGGRPFLAGS_LEVEL_7:     pszGroup = "level 7" ;  cch = sizeof("level 7" ) - 1; break;
+                        case RTLOGGRPFLAGS_LEVEL_8:     pszGroup = "level 8" ;  cch = sizeof("level 8" ) - 1; break;
+                        case RTLOGGRPFLAGS_LEVEL_9:     pszGroup = "level 9" ;  cch = sizeof("level 9" ) - 1; break;
+                        case RTLOGGRPFLAGS_LEVEL_10:    pszGroup = "level 10";  cch = sizeof("level 10") - 1; break;
+                        case RTLOGGRPFLAGS_LEVEL_11:    pszGroup = "level 11";  cch = sizeof("level 11") - 1; break;
+                        case RTLOGGRPFLAGS_LEVEL_12:    pszGroup = "level 12";  cch = sizeof("level 12") - 1; break;
                         case RTLOGGRPFLAGS_FLOW:        pszGroup = "flow"    ;  cch = sizeof("flow"    ) - 1; break;
-
-                        /* personal groups */
-                        case RTLOGGRPFLAGS_LELIK:       pszGroup = "lelik"   ;  cch = sizeof("lelik"   ) - 1; break;
-                        case RTLOGGRPFLAGS_MICHAEL:     pszGroup = "Michael" ;  cch = sizeof("Michael" ) - 1; break;
-                        case RTLOGGRPFLAGS_SUNLOVER:    pszGroup = "sunlover";  cch = sizeof("sunlover") - 1; break;
-                        case RTLOGGRPFLAGS_ACHIM:       pszGroup = "Achim"   ;  cch = sizeof("Achim"   ) - 1; break;
-                        case RTLOGGRPFLAGS_SANDER:      pszGroup = "Sander"  ;  cch = sizeof("Sander"  ) - 1; break;
-                        case RTLOGGRPFLAGS_KLAUS:       pszGroup = "Klaus"   ;  cch = sizeof("Klaus"   ) - 1; break;
-                        case RTLOGGRPFLAGS_FRANK:       pszGroup = "Frank"   ;  cch = sizeof("Frank"   ) - 1; break;
-                        case RTLOGGRPFLAGS_BIRD:        pszGroup = "bird"    ;  cch = sizeof("bird"    ) - 1; break;
-                        case RTLOGGRPFLAGS_NONAME:      pszGroup = "noname"  ;  cch = sizeof("noname"  ) - 1; break;
+                        case RTLOGGRPFLAGS_WARN:        pszGroup = "warn"    ;  cch = sizeof("warn"    ) - 1; break;
                         default:                        pszGroup = "????????";  cch = sizeof("????????") - 1; break;
                     }
Index: /trunk/src/VBox/Runtime/common/log/logrel.cpp
===================================================================
--- /trunk/src/VBox/Runtime/common/log/logrel.cpp	(revision 55987)
+++ /trunk/src/VBox/Runtime/common/log/logrel.cpp	(revision 55988)
@@ -81,5 +81,5 @@
 
 
-RTDECL(PRTLOGGER)   RTLogRelGetDefaultInstanceEx(uint32_t fFlags, uint32_t iGroup)
+RTDECL(PRTLOGGER)   RTLogRelGetDefaultInstanceEx(uint32_t fFlagsAndGroup)
 {
 #ifdef IN_RC
@@ -92,8 +92,13 @@
         if (pLogger->fFlags & RTLOGFLAGS_DISABLED)
             pLogger = NULL;
-        else if (   iGroup != UINT32_MAX
+        else
+        {
+            uint16_t const fFlags = RT_LO_U16(fFlagsAndGroup);
+            uint16_t const iGroup = RT_HI_U16(fFlagsAndGroup);
+            if (   iGroup != UINT16_MAX
                  && (   (pLogger->afGroups[iGroup < pLogger->cGroups ? iGroup : 0] & (fFlags | RTLOGGRPFLAGS_ENABLED))
                      != (fFlags | RTLOGGRPFLAGS_ENABLED)))
             pLogger = NULL;
+        }
     }
     return pLogger;
Index: /trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp	(revision 55987)
+++ /trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp	(revision 55988)
@@ -615,5 +615,5 @@
         if (hEventToSignal != NIL_RTSEMEVENT)
         {
-            LogBird(("Signalling %#x\n", hEventToSignal));
+            Log8(("Signalling %#x\n", hEventToSignal));
             int rc = RTSemEventSignal(hEventToSignal);
             AssertRC(rc);
Index: /trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PGMAllBth.h	(revision 55987)
+++ /trunk/src/VBox/VMM/VMMAll/PGMAllBth.h	(revision 55988)
@@ -631,5 +631,5 @@
                           ? &pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZTrap0eTime2DirtyAndAccessed
                           : &pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZTrap0eTime2GuestTrap; });
-            LogBird(("Trap0eHandler: returns VINF_SUCCESS\n"));
+            Log8(("Trap0eHandler: returns VINF_SUCCESS\n"));
             return VINF_SUCCESS;
         }
Index: /trunk/src/recompiler/VBoxREMWrapper.cpp
===================================================================
--- /trunk/src/recompiler/VBoxREMWrapper.cpp	(revision 55987)
+++ /trunk/src/recompiler/VBoxREMWrapper.cpp	(revision 55988)
@@ -1086,5 +1086,4 @@
 static const REMPARMDESC g_aArgsRTLogGetDefaultInstanceEx[] =
 {
-    { REMPARMDESC_FLAGS_INT,        sizeof(uint32_t),           NULL },
     { REMPARMDESC_FLAGS_INT,        sizeof(uint32_t),           NULL }
 };
