Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageDebugVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageDebugVM.cpp	(revision 39667)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageDebugVM.cpp	(revision 39668)
@@ -400,4 +400,52 @@
         RTPrintf("Successfully set %u registers\n", aBstrNames.size());
     }
+
+    return RTEXITCODE_SUCCESS;
+}
+
+/**
+ * Handles the show sub-command.
+ *
+ * @returns Suitable exit code.
+ * @param   pArgs               The handler arguments.
+ * @param   pDebugger           Pointer to the debugger interface.
+ */
+static RTEXITCODE handleDebugVM_Show(HandlerArg *pArgs, IMachineDebugger *pDebugger)
+{
+    if (pArgs->argc != 3)
+        return errorSyntax(USAGE_DEBUGVM, "The show sub-command takes exactly one argument");
+
+    const char *pszWhat = pArgs->argv[2];
+    if (   !strcmp(pszWhat, "log-settings")
+        || !strcmp(pszWhat, "logdbg-settings"))
+    {
+        com::Bstr bstrFlags;
+        CHECK_ERROR2_RET(pDebugger, COMGETTER(LogDbgFlags)(bstrFlags.asOutParam()), RTEXITCODE_FAILURE);
+        com::Bstr bstrGroups;
+        CHECK_ERROR2_RET(pDebugger, COMGETTER(LogDbgGroups)(bstrGroups.asOutParam()), RTEXITCODE_FAILURE);
+        com::Bstr bstrDestinations;
+        CHECK_ERROR2_RET(pDebugger, COMGETTER(LogDbgDestinations)(bstrDestinations.asOutParam()), RTEXITCODE_FAILURE);
+        RTPrintf("Debug log settings:\n");
+        RTPrintf("        VBOX_LOG=%ls\n"
+                 "  VBOX_LOG_FLAGS=%ls\n"
+                 "   VBOX_LOG_DEST=%ls\n"
+                 , bstrGroups.raw(), bstrFlags.raw(), bstrDestinations.raw());
+    }
+    else if (!strcmp(pszWhat, "logrel-settings"))
+    {
+        com::Bstr bstrFlags;
+        CHECK_ERROR2_RET(pDebugger, COMGETTER(LogRelFlags)(bstrFlags.asOutParam()), RTEXITCODE_FAILURE);
+        com::Bstr bstrGroups;
+        CHECK_ERROR2_RET(pDebugger, COMGETTER(LogRelGroups)(bstrGroups.asOutParam()), RTEXITCODE_FAILURE);
+        com::Bstr bstrDestinations;
+        CHECK_ERROR2_RET(pDebugger, COMGETTER(LogRelDestinations)(bstrDestinations.asOutParam()), RTEXITCODE_FAILURE);
+        RTPrintf("Release log settings:\n");
+        RTPrintf("        VBOX_RELEASE_LOG=%ls\n"
+                 "  VBOX_RELEASE_LOG_FLAGS=%ls\n"
+                 "   VBOX_RELEASE_LOG_DEST=%ls\n"
+                 , bstrGroups.raw(), bstrFlags.raw(), bstrDestinations.raw());
+    }
+    else
+        return errorSyntax(USAGE_DEBUGVM, "The show sub-command has no idea what '%s' might be", pszWhat);
 
     return RTEXITCODE_SUCCESS;
@@ -527,4 +575,6 @@
             else if (!strcmp(pszSubCmd, "setregisters"))
                 rcExit = handleDebugVM_SetRegisters(pArgs, ptrDebugger);
+            else if (!strcmp(pszSubCmd, "show"))
+                rcExit = handleDebugVM_Show(pArgs, ptrDebugger);
             else if (!strcmp(pszSubCmd, "statistics"))
                 rcExit = handleDebugVM_Statistics(pArgs, ptrDebugger);
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 39667)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 39668)
@@ -652,4 +652,5 @@
                      "                            getregisters [--cpu <id>] <reg>|all ... |\n"
                      "                            setregisters [--cpu <id>] <reg>=<value> ... |\n"
+                     "                            show <logdbg-settings|logrel-settings> |\n"
                      "                            statistics [--reset] [--pattern <pattern>]\n"
                      "                            [--descriptions]\n"
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 39667)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 39668)
@@ -13185,5 +13185,5 @@
   <interface
     name="IMachineDebugger" extends="$unknown"
-    uuid="1bfd2fa9-0d91-44d3-9515-368dcbb3eb4d"
+    uuid="a9abbb7c-d678-43b2-bed2-19ec0e32303d"
     wsmap="suppress"
     >
@@ -13541,14 +13541,26 @@
     </attribute>
 
-    <attribute name="logFlags" type="wstring" readonly="yes">
+    <attribute name="logDbgFlags" type="wstring" readonly="yes">
       <desc>The debug logger flags.</desc>
     </attribute>
 
-    <attribute name="logGroups" type="wstring" readonly="yes">
+    <attribute name="logDbgGroups" type="wstring" readonly="yes">
       <desc>The debug logger's group settings.</desc>
     </attribute>
 
-    <attribute name="logDestinations" type="wstring" readonly="yes">
+    <attribute name="logDbgDestinations" type="wstring" readonly="yes">
       <desc>The debug logger's destination settings.</desc>
+    </attribute>
+
+    <attribute name="logRelFlags" type="wstring" readonly="yes">
+      <desc>The release logger flags.</desc>
+    </attribute>
+
+    <attribute name="logRelGroups" type="wstring" readonly="yes">
+      <desc>The release logger's group settings.</desc>
+    </attribute>
+
+    <attribute name="logRelDestinations" type="wstring" readonly="yes">
+      <desc>The relase logger's destination settings.</desc>
     </attribute>
 
Index: /trunk/src/VBox/Main/include/MachineDebuggerImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/MachineDebuggerImpl.h	(revision 39667)
+++ /trunk/src/VBox/Main/include/MachineDebuggerImpl.h	(revision 39668)
@@ -22,4 +22,5 @@
 
 #include "VirtualBoxBase.h"
+#include <iprt/log.h>
 
 class Console;
@@ -63,7 +64,10 @@
     STDMETHOD(COMGETTER(LogEnabled)) (BOOL *aEnabled);
     STDMETHOD(COMSETTER(LogEnabled)) (BOOL aEnable);
-    STDMETHOD(COMGETTER(LogFlags)) (BSTR *a_pbstrSettings);
-    STDMETHOD(COMGETTER(LogGroups)) (BSTR *a_pbstrSettings);
-    STDMETHOD(COMGETTER(LogDestinations)) (BSTR *a_pbstrSettings);
+    STDMETHOD(COMGETTER(LogDbgFlags)) (BSTR *a_pbstrSettings);
+    STDMETHOD(COMGETTER(LogDbgGroups)) (BSTR *a_pbstrSettings);
+    STDMETHOD(COMGETTER(LogDbgDestinations)) (BSTR *a_pbstrSettings);
+    STDMETHOD(COMGETTER(LogRelFlags)) (BSTR *a_pbstrSettings);
+    STDMETHOD(COMGETTER(LogRelGroups)) (BSTR *a_pbstrSettings);
+    STDMETHOD(COMGETTER(LogRelDestinations)) (BSTR *a_pbstrSettings);
     STDMETHOD(COMGETTER(HWVirtExEnabled)) (BOOL *aEnabled);
     STDMETHOD(COMGETTER(HWVirtExNestedPagingEnabled)) (BOOL *aEnabled);
@@ -106,4 +110,10 @@
     bool queueSettings() const;
 
+    /** RTLogGetFlags, RTLogGetGroupSettings and RTLogGetDestinations function. */
+    typedef DECLCALLBACK(int) FNLOGGETSTR(PRTLOGGER, char *, size_t);
+    /** Function pointer.  */
+    typedef FNLOGGETSTR *PFNLOGGETSTR;
+    HRESULT logStringProps(PRTLOGGER pLogger, PFNLOGGETSTR pfnLogGetStr, const char *pszLogGetStr, BSTR *a_bstrSettings);
+
     Console * const mParent;
     // flags whether settings have been queued because
Index: /trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp	(revision 39667)
+++ /trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp	(revision 39668)
@@ -447,17 +447,126 @@
 }
 
-STDMETHODIMP MachineDebugger::COMGETTER(LogFlags)(BSTR *a_pbstrSettings)
-{
-    ReturnComNotImplemented();
-}
-
-STDMETHODIMP MachineDebugger::COMGETTER(LogGroups)(BSTR *a_pbstrSettings)
-{
-    ReturnComNotImplemented();
-}
-
-STDMETHODIMP MachineDebugger::COMGETTER(LogDestinations)(BSTR *a_pbstrSettings)
-{
-    ReturnComNotImplemented();
+HRESULT MachineDebugger::logStringProps(PRTLOGGER pLogger, PFNLOGGETSTR pfnLogGetStr,
+                                        const char *pszLogGetStr, BSTR *a_pbstrSettings)
+{
+    /* Make sure the VM is powered up. */
+    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
+    Console::SafeVMPtr ptrVM(mParent);
+    HRESULT hrc = ptrVM.rc();
+    if (FAILED(hrc))
+        return hrc;
+
+    /* Make sure we've got a logger. */
+    if (!pLogger)
+    {
+        Bstr bstrEmpty;
+        bstrEmpty.cloneTo(a_pbstrSettings);
+        return S_OK;
+    }
+
+    /* Do the job. */
+    size_t cbBuf = _1K;
+    for (;;)
+    {
+        char *pszBuf = (char *)RTMemTmpAlloc(cbBuf);
+        AssertReturn(pszBuf, E_OUTOFMEMORY);
+
+        int rc = pfnLogGetStr(pLogger, pszBuf, cbBuf);
+        if (RT_SUCCESS(rc))
+        {
+            try
+            {
+                Bstr bstrRet(pszBuf);
+                bstrRet.detachTo(a_pbstrSettings);
+                hrc = S_OK;
+            }
+            catch (std::bad_alloc)
+            {
+                hrc = E_OUTOFMEMORY;
+            }
+            RTMemTmpFree(pszBuf);
+            return hrc;
+        }
+        RTMemTmpFree(pszBuf);
+        AssertReturn(rc == VERR_BUFFER_OVERFLOW, setError(VBOX_E_IPRT_ERROR, tr("%s returned %Rrc"), pszLogGetStr, rc));
+
+        /* try again with a bigger buffer. */
+        cbBuf *= 2;
+        AssertReturn(cbBuf <= _256K, setError(E_FAIL, tr("%s returns too much data"), pszLogGetStr));
+    }
+}
+
+
+STDMETHODIMP MachineDebugger::COMGETTER(LogDbgFlags)(BSTR *a_pbstrSettings)
+{
+    CheckComArgOutPointerValid(a_pbstrSettings);
+
+    AutoCaller autoCaller(this);
+    HRESULT hrc = autoCaller.rc();
+    if (SUCCEEDED(hrc))
+        hrc = logStringProps(RTLogGetDefaultInstance(), RTLogGetFlags, "RTGetFlags", a_pbstrSettings);
+
+    return hrc;
+}
+
+STDMETHODIMP MachineDebugger::COMGETTER(LogDbgGroups)(BSTR *a_pbstrSettings)
+{
+    CheckComArgOutPointerValid(a_pbstrSettings);
+
+    AutoCaller autoCaller(this);
+    HRESULT hrc = autoCaller.rc();
+    if (SUCCEEDED(hrc))
+        hrc = logStringProps(RTLogGetDefaultInstance(), RTLogGetGroupSettings, "RTLogGetGroupSettings", a_pbstrSettings);
+
+    return hrc;
+}
+
+STDMETHODIMP MachineDebugger::COMGETTER(LogDbgDestinations)(BSTR *a_pbstrSettings)
+{
+    CheckComArgOutPointerValid(a_pbstrSettings);
+
+    AutoCaller autoCaller(this);
+    HRESULT hrc = autoCaller.rc();
+    if (SUCCEEDED(hrc))
+        hrc = logStringProps(RTLogRelDefaultInstance(), RTLogGetDestinations, "RTLogGetDestinations", a_pbstrSettings);
+
+    return hrc;
+}
+
+
+STDMETHODIMP MachineDebugger::COMGETTER(LogRelFlags)(BSTR *a_pbstrSettings)
+{
+    CheckComArgOutPointerValid(a_pbstrSettings);
+
+    AutoCaller autoCaller(this);
+    HRESULT hrc = autoCaller.rc();
+    if (SUCCEEDED(hrc))
+        hrc = logStringProps(RTLogRelDefaultInstance(), RTLogGetFlags, "RTGetFlags", a_pbstrSettings);
+
+    return hrc;
+}
+
+STDMETHODIMP MachineDebugger::COMGETTER(LogRelGroups)(BSTR *a_pbstrSettings)
+{
+    CheckComArgOutPointerValid(a_pbstrSettings);
+
+    AutoCaller autoCaller(this);
+    HRESULT hrc = autoCaller.rc();
+    if (SUCCEEDED(hrc))
+        hrc = logStringProps(RTLogRelDefaultInstance(), RTLogGetGroupSettings, "RTLogGetGroupSettings", a_pbstrSettings);
+
+    return hrc;
+}
+
+STDMETHODIMP MachineDebugger::COMGETTER(LogRelDestinations)(BSTR *a_pbstrSettings)
+{
+    CheckComArgOutPointerValid(a_pbstrSettings);
+
+    AutoCaller autoCaller(this);
+    HRESULT hrc = autoCaller.rc();
+    if (SUCCEEDED(hrc))
+        hrc = logStringProps(RTLogRelDefaultInstance(), RTLogGetDestinations, "RTLogGetDestinations", a_pbstrSettings);
+
+    return hrc;
 }
 
