aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorspiff <spiff@xbmc.org>2013-05-04 10:52:17 +0200
committerspiff <spiff@xbmc.org>2013-05-04 10:58:28 +0200
commit8ff1023321b1814d5afe5c1945e6967f65ac8454 (patch)
tree335d947faed02928b2984fcacabb6e021ab86f99
parentf6b29c08917fecffa25af48222a508d53838b016 (diff)
changed: improve logging customizability
- remove LOG_LEVEL_DEBUG_SAMBA - add a mask field for log levels - make the log levels customizable from the gui
-rw-r--r--addons/xbmc.debug/addon.xml11
-rw-r--r--addons/xbmc.debug/resources/language/English/strings.po42
-rw-r--r--addons/xbmc.debug/resources/settings.xml9
-rw-r--r--language/English/strings.po6
-rw-r--r--system/settings/settings.xml8
-rw-r--r--xbmc/Application.cpp6
-rw-r--r--xbmc/commons/ilog.h14
-rw-r--r--xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp3
-rw-r--r--xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp5
-rw-r--r--xbmc/filesystem/CurlFile.cpp3
-rw-r--r--xbmc/filesystem/MythSession.cpp2
-rw-r--r--xbmc/filesystem/SmbFile.cpp4
-rw-r--r--xbmc/linux/DBusMessage.cpp3
-rw-r--r--xbmc/settings/AdvancedSettings.cpp34
-rw-r--r--xbmc/settings/AdvancedSettings.h8
-rw-r--r--xbmc/settings/Settings.cpp1
-rw-r--r--xbmc/storage/linux/UDisksProvider.cpp15
-rw-r--r--xbmc/utils/log.cpp12
-rw-r--r--xbmc/utils/log.h2
19 files changed, 166 insertions, 22 deletions
diff --git a/addons/xbmc.debug/addon.xml b/addons/xbmc.debug/addon.xml
new file mode 100644
index 0000000000..a9000d7c35
--- /dev/null
+++ b/addons/xbmc.debug/addon.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<addon id="xbmc.debug" version="0.1.0" provider-name="Team XBMC" name="Log">
+ <backwards-compatibility abi="0.1"/>
+ <requires>
+ <c-pluff version="0.1"/>
+ </requires>
+ <extension point="xbmc.python.module"/>
+ <extension point="xbmc.addon.metadata">
+ <platform>all</platform>
+ </extension>
+</addon>
diff --git a/addons/xbmc.debug/resources/language/English/strings.po b/addons/xbmc.debug/resources/language/English/strings.po
new file mode 100644
index 0000000000..8bb4c72d43
--- /dev/null
+++ b/addons/xbmc.debug/resources/language/English/strings.po
@@ -0,0 +1,42 @@
+# XBMC Media Center language file
+# Addon Name: Debug customizer
+# Addon id: xbmc.debug
+# Addon version: 0.1.0
+# Addon Provider: Team XBMC
+msgid ""
+msgstr ""
+"Project-Id-Version: XBMC Main Translation Project (Frodo)\n"
+"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: XBMC Translation Team\n"
+"Language-Team: English (http://www.transifex.com/projects/p/XBMC-Main-Frodo/language/en/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: en\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgctxt "#30000"
+msgid "Verbose logging for SMB library"
+msgstr ""
+
+msgctxt "#30001"
+msgid "Verbose logging for CURL library (http, dav)"
+msgstr ""
+
+msgctxt "#30002"
+msgid "Verbose logging for CMYTH library"
+msgstr ""
+
+msgctxt "#30003"
+msgid "Verbose logging for FFMPEG libraries"
+msgstr ""
+
+msgctxt "#30004"
+msgid "Verbose logging for RTMP library"
+msgstr ""
+
+msgctxt "#30005"
+msgid "Verbose logging for DBUS calls"
+msgstr ""
diff --git a/addons/xbmc.debug/resources/settings.xml b/addons/xbmc.debug/resources/settings.xml
new file mode 100644
index 0000000000..2644a96917
--- /dev/null
+++ b/addons/xbmc.debug/resources/settings.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<settings>
+ <setting id="bit1" type="bool" label="30000" default="0"/>
+ <setting id="bit2" type="bool" label="30001" default="0"/>
+ <setting id="bit3" type="bool" label="30002" default="0"/>
+ <setting id="bit4" type="bool" label="30003" default="0"/>
+ <setting id="bit5" type="bool" label="30004" default="0"/>
+ <setting id="bit6" type="bool" label="30005" default="0"/>
+</settings>
diff --git a/language/English/strings.po b/language/English/strings.po
index 8a8a088012..b8cfcd2190 100644
--- a/language/English/strings.po
+++ b/language/English/strings.po
@@ -2725,7 +2725,11 @@ msgctxt "#665"
msgid "Compression level"
msgstr ""
-#empty strings from id 666 to 699
+msgctxt "#666"
+msgid "Verbose logging..."
+msgstr ""
+
+#empty strings from id 667 to 699
msgctxt "#700"
msgid "Cleaning up library"
diff --git a/system/settings/settings.xml b/system/settings/settings.xml
index 0ca8806f17..2fa58349fe 100644
--- a/system/settings/settings.xml
+++ b/system/settings/settings.xml
@@ -2243,6 +2243,14 @@
<heading>657</heading>
<control type="button" format="path" />
</setting>
+ <setting id="debug.setextraloglevel" type="action" label="666" help="">
+ <level>1</level>
+ <control type="button" format="action">
+ <dependencies>
+ <dependency type="enable" setting="debug.showloginfo">true</dependency>
+ </dependencies>
+ </control>
+ </setting>
</group>
</category>
<category id="masterlock" label="12360" help="">
diff --git a/xbmc/Application.cpp b/xbmc/Application.cpp
index a362a51f58..9a493bf428 100644
--- a/xbmc/Application.cpp
+++ b/xbmc/Application.cpp
@@ -783,6 +783,12 @@ bool CApplication::Create()
return false;
}
+ // set logging from debug add-on
+ AddonPtr addon;
+ CAddonMgr::Get().GetAddon("xbmc.debug", addon);
+ if (addon)
+ g_advancedSettings.SetExtraLogsFromAddon(addon.get());
+
g_peripherals.Initialise();
// Create the Mouse, Keyboard, Remote, and Joystick devices
diff --git a/xbmc/commons/ilog.h b/xbmc/commons/ilog.h
index 395fc46f82..012d3f681f 100644
--- a/xbmc/commons/ilog.h
+++ b/xbmc/commons/ilog.h
@@ -26,8 +26,7 @@
#define LOG_LEVEL_NORMAL 0 // shows notice, error, severe and fatal
#define LOG_LEVEL_DEBUG 1 // shows all
#define LOG_LEVEL_DEBUG_FREEMEM 2 // shows all + shows freemem on screen
-#define LOG_LEVEL_DEBUG_SAMBA 3 // shows all + freemem on screen + samba debugging
-#define LOG_LEVEL_MAX LOG_LEVEL_DEBUG_SAMBA
+#define LOG_LEVEL_MAX LOG_LEVEL_DEBUG_FREEMEM
// ones we use in the code
#define LOGDEBUG 0
@@ -39,6 +38,17 @@
#define LOGFATAL 6
#define LOGNONE 7
+// extra masks - from bit 5
+#define LOGMASKBIT 5
+#define LOGMASK ((1 << LOGMASKBIT)-1)
+
+#define LOGSAMBA (1 << (LOGMASKBIT+0))
+#define LOGCURL (1 << (LOGMASKBIT+1))
+#define LOGCMYTH (1 << (LOGMASKBIT+2))
+#define LOGFFMPEG (1 << (LOGMASKBIT+3))
+#define LOGRTMP (1 << (LOGMASKBIT+4))
+#define LOGDBUS (1 << (LOGMASKBIT+5))
+
#ifdef __GNUC__
#define ATTRIB_LOG_FORMAT __attribute__((format(printf,3,4)))
#else
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
index f95b008175..d18c439383 100644
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
@@ -104,7 +104,8 @@ void ff_avutil_log(void* ptr, int level, const char* format, va_list va)
AVClass* avc= ptr ? *(AVClass**)ptr : NULL;
- if(level >= AV_LOG_DEBUG && g_advancedSettings.m_logLevel <= LOG_LEVEL_DEBUG_SAMBA)
+ if(level >= AV_LOG_DEBUG &&
+ (g_advancedSettings.m_extraLogLevels & LOGFFMPEG) == 0)
return;
else if(g_advancedSettings.m_logLevel <= LOG_LEVEL_NORMAL)
return;
diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp
index fb8164f81f..7d31f71db5 100644
--- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp
+++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp
@@ -73,12 +73,15 @@ CDVDInputStreamRTMP::CDVDInputStreamRTMP() : CDVDInputStream(DVDSTREAM_TYPE_RTMP
m_libRTMP.LogSetCallback(CDVDInputStreamRTMP_Log);
switch (g_advancedSettings.m_logLevel)
{
- case LOG_LEVEL_DEBUG_SAMBA: level = RTMP_LOGDEBUG2; break;
case LOG_LEVEL_DEBUG_FREEMEM:
case LOG_LEVEL_DEBUG: level = RTMP_LOGDEBUG; break;
case LOG_LEVEL_NORMAL: level = RTMP_LOGINFO; break;
default: level = RTMP_LOGCRIT; break;
}
+
+ if (g_advancedSettings.m_extraLogLevels & LOGRTMP)
+ level = RTMP_LOGDEBUG2;
+
m_libRTMP.LogSetLevel(level);
RTMP_level = level;
diff --git a/xbmc/filesystem/CurlFile.cpp b/xbmc/filesystem/CurlFile.cpp
index a35746aec0..ccfab0d6a4 100644
--- a/xbmc/filesystem/CurlFile.cpp
+++ b/xbmc/filesystem/CurlFile.cpp
@@ -73,8 +73,7 @@ extern "C" int debug_callback(CURL_HANDLE *handle, curl_infotype info, char *out
if (info == CURLINFO_DATA_IN || info == CURLINFO_DATA_OUT)
return 0;
- // Only shown cURL debug into with loglevel DEBUG_SAMBA or higher
- if( g_advancedSettings.m_logLevel < LOG_LEVEL_DEBUG_SAMBA )
+ if ((g_advancedSettings.m_extraLogLevels & LOGCURL) == 0)
return 0;
CStdString strLine;
diff --git a/xbmc/filesystem/MythSession.cpp b/xbmc/filesystem/MythSession.cpp
index 419b25624f..e669d5ce0a 100644
--- a/xbmc/filesystem/MythSession.cpp
+++ b/xbmc/filesystem/MythSession.cpp
@@ -373,7 +373,7 @@ CMythSession::CMythSession(const CURL& url) : CThread("MythSession")
if (m_dll->IsLoaded())
{
m_dll->set_dbg_msgcallback(&CMythSession::LogCMyth);
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
+ if (g_advancedSettings.m_extraLogLevels & LOGCMYTH)
m_dll->dbg_level(CMYTH_DBG_ALL);
else if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG)
m_dll->dbg_level(CMYTH_DBG_DETAIL);
diff --git a/xbmc/filesystem/SmbFile.cpp b/xbmc/filesystem/SmbFile.cpp
index 07c66b15c6..1300f242b9 100644
--- a/xbmc/filesystem/SmbFile.cpp
+++ b/xbmc/filesystem/SmbFile.cpp
@@ -156,7 +156,7 @@ void CSMB::Init()
// setup our context
m_context = smbc_new_context();
#ifdef DEPRECATED_SMBC_INTERFACE
- smbc_setDebug(m_context, g_advancedSettings.m_logLevel == LOG_LEVEL_DEBUG_SAMBA ? 10 : 0);
+ smbc_setDebug(m_context, (g_advancedSettings.m_extraLogLevels & LOGSAMBA)?10:0);
smbc_setFunctionAuthData(m_context, xb_smbc_auth);
orig_cache = smbc_getFunctionGetCachedServer(m_context);
smbc_setFunctionGetCachedServer(m_context, xb_smbc_cache);
@@ -165,7 +165,7 @@ void CSMB::Init()
smbc_setTimeout(m_context, g_advancedSettings.m_sambaclienttimeout * 1000);
smbc_setUser(m_context, strdup("guest"));
#else
- m_context->debug = g_advancedSettings.m_logLevel == LOG_LEVEL_DEBUG_SAMBA ? 10 : 0;
+ m_context->debug = (g_advancedSettings.m_extraLogLevels & LOGSAMBA?10:0);
m_context->callbacks.auth_fn = xb_smbc_auth;
orig_cache = m_context->callbacks.get_cached_srv_fn;
m_context->callbacks.get_cached_srv_fn = xb_smbc_cache;
diff --git a/xbmc/linux/DBusMessage.cpp b/xbmc/linux/DBusMessage.cpp
index 40caa9f05a..7665d99da8 100644
--- a/xbmc/linux/DBusMessage.cpp
+++ b/xbmc/linux/DBusMessage.cpp
@@ -28,8 +28,7 @@ CDBusMessage::CDBusMessage(const char *destination, const char *object, const ch
m_message = dbus_message_new_method_call (destination, object, interface, method);
m_haveArgs = false;
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
- CLog::Log(LOGDEBUG, "DBus: Creating message to %s on %s with interface %s and method %s\n", destination, object, interface, method);
+ CLog::Log(LOGDEBUG|LOGDBUS, "DBus: Creating message to %s on %s with interface %s and method %s\n", destination, object, interface, method);
}
CDBusMessage::~CDBusMessage()
diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
index 354bd7548f..11fd1e7a64 100644
--- a/xbmc/settings/AdvancedSettings.cpp
+++ b/xbmc/settings/AdvancedSettings.cpp
@@ -35,8 +35,13 @@
#include "utils/XMLUtils.h"
#include "utils/log.h"
#include "filesystem/SpecialProtocol.h"
+#include "addons/IAddon.h"
+#include "addons/AddonManager.h"
+#include "addons/GUIDialogAddonSettings.h"
+using namespace ADDON;
using namespace XFILE;
+using namespace std;
CAdvancedSettings::CAdvancedSettings()
{
@@ -78,6 +83,21 @@ void CAdvancedSettings::OnSettingChanged(const CSetting *setting)
SetDebugMode(((CSettingBool*)setting)->GetValue());
}
+void CAdvancedSettings::OnSettingAction(const CSetting *setting)
+{
+ if (setting == NULL)
+ return;
+
+ const std::string settingId = setting->GetId();
+ if (settingId == "debug.setextraloglevel")
+ {
+ AddonPtr addon;
+ CAddonMgr::Get().GetAddon("xbmc.debug", addon);
+ CGUIDialogAddonSettings::ShowAndGetInput(addon, true);
+ SetExtraLogsFromAddon(addon.get());
+ }
+}
+
void CAdvancedSettings::Initialize()
{
m_audioHeadRoom = 0;
@@ -362,6 +382,7 @@ void CAdvancedSettings::Initialize()
m_videoExtensions += "|.pvr";
m_logLevelHint = m_logLevel = LOG_LEVEL_NORMAL;
+ m_extraLogLevels = 0;
#if defined(TARGET_DARWIN)
CStdString logDir = getenv("HOME");
@@ -1285,3 +1306,16 @@ void CAdvancedSettings::SetDebugMode(bool debug)
CLog::SetLogLevel(level);
}
}
+
+void CAdvancedSettings::SetExtraLogsFromAddon(ADDON::IAddon* addon)
+{
+ m_extraLogLevels = 0;
+ for (int i=LOGMASKBIT;i<31;++i)
+ {
+ CStdString str;
+ str.Format("bit%i", i-LOGMASKBIT+1);
+ if (addon->GetSetting(str) == "true")
+ m_extraLogLevels |= (1 << i);
+ }
+ CLog::SetExtraLogLevels(m_extraLogLevels);
+}
diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h
index dbc8d0c03b..8e9d9f2eac 100644
--- a/xbmc/settings/AdvancedSettings.h
+++ b/xbmc/settings/AdvancedSettings.h
@@ -27,6 +27,10 @@
#include "utils/GlobalsHandling.h"
class TiXmlElement;
+namespace ADDON
+{
+ class IAddon;
+}
class DatabaseSettings
{
@@ -94,6 +98,8 @@ class CAdvancedSettings : public ISettingCallback, public ISettingsHandler
virtual void OnSettingChanged(const CSetting *setting);
+ virtual void OnSettingAction(const CSetting *setting);
+
void Initialize();
bool Initialized() { return m_initialized; };
void AddSettingsFile(const CStdString &filename);
@@ -184,6 +190,7 @@ class CAdvancedSettings : public ISettingCallback, public ISettingsHandler
int m_songInfoDuration;
int m_logLevel;
int m_logLevelHint;
+ int m_extraLogLevels;
CStdString m_cddbAddress;
//airtunes + airplay
@@ -369,6 +376,7 @@ class CAdvancedSettings : public ISettingCallback, public ISettingsHandler
bool m_loaded;
void SetDebugMode(bool debug);
+ void SetExtraLogsFromAddon(ADDON::IAddon* addon);
// runtime settings which cannot be set from advancedsettings.xml
CStdString m_pictureExtensions;
diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp
index 7f0d999b19..d9cb651d62 100644
--- a/xbmc/settings/Settings.cpp
+++ b/xbmc/settings/Settings.cpp
@@ -810,6 +810,7 @@ void CSettings::InitializeISettingCallbacks()
// register any ISettingCallback implementations
std::set<std::string> settingSet;
settingSet.insert("debug.showloginfo");
+ settingSet.insert("debug.setextraloglevel");
m_settingsManager->RegisterCallback(&g_advancedSettings, settingSet);
settingSet.clear();
diff --git a/xbmc/storage/linux/UDisksProvider.cpp b/xbmc/storage/linux/UDisksProvider.cpp
index 7b91db847f..e581e0011e 100644
--- a/xbmc/storage/linux/UDisksProvider.cpp
+++ b/xbmc/storage/linux/UDisksProvider.cpp
@@ -303,8 +303,7 @@ bool CUDisksProvider::HasUDisks()
void CUDisksProvider::DeviceAdded(const char *object, IStorageEventsCallback *callback)
{
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
- CLog::Log(LOGDEBUG, "UDisks: DeviceAdded (%s)", object);
+ CLog::Log(LOGDEBUG|LOGDBUS, "UDisks: DeviceAdded (%s)", object);
if (m_AvailableDevices[object])
{
@@ -319,8 +318,7 @@ void CUDisksProvider::DeviceAdded(const char *object, IStorageEventsCallback *ca
if (g_advancedSettings.m_handleMounting)
device->Mount();
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
- CLog::Log(LOGDEBUG, "UDisks: DeviceAdded - %s", device->toString().c_str());
+ CLog::Log(LOGDEBUG|LOGDBUS, "UDisks: DeviceAdded - %s", device->toString().c_str());
if (device->m_isMounted && device->IsApproved())
{
@@ -332,8 +330,7 @@ void CUDisksProvider::DeviceAdded(const char *object, IStorageEventsCallback *ca
void CUDisksProvider::DeviceRemoved(const char *object, IStorageEventsCallback *callback)
{
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
- CLog::Log(LOGDEBUG, "UDisks: DeviceRemoved (%s)", object);
+ CLog::Log(LOGDEBUG|LOGDBUS, "UDisks: DeviceRemoved (%s)", object);
CUDiskDevice *device = m_AvailableDevices[object];
if (device)
@@ -348,8 +345,7 @@ void CUDisksProvider::DeviceRemoved(const char *object, IStorageEventsCallback *
void CUDisksProvider::DeviceChanged(const char *object, IStorageEventsCallback *callback)
{
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
- CLog::Log(LOGDEBUG, "UDisks: DeviceChanged (%s)", object);
+ CLog::Log(LOGDEBUG|LOGDBUS, "UDisks: DeviceChanged (%s)", object);
CUDiskDevice *device = m_AvailableDevices[object];
if (device == NULL)
@@ -371,8 +367,7 @@ void CUDisksProvider::DeviceChanged(const char *object, IStorageEventsCallback *
else if (mounted && !device->m_isMounted && callback)
callback->OnStorageSafelyRemoved(device->m_Label);
- if (g_advancedSettings.m_logLevel >= LOG_LEVEL_DEBUG_SAMBA)
- CLog::Log(LOGDEBUG, "UDisks: DeviceChanged - %s", device->toString().c_str());
+ CLog::Log(LOGDEBUG|LOGDBUS, "UDisks: DeviceChanged - %s", device->toString().c_str());
}
}
diff --git a/xbmc/utils/log.cpp b/xbmc/utils/log.cpp
index bdb24766f0..17820ac6a0 100644
--- a/xbmc/utils/log.cpp
+++ b/xbmc/utils/log.cpp
@@ -38,6 +38,7 @@
#define m_repeatLogLevel XBMC_GLOBAL_USE(CLog::CLogGlobals).m_repeatLogLevel
#define m_repeatLine XBMC_GLOBAL_USE(CLog::CLogGlobals).m_repeatLine
#define m_logLevel XBMC_GLOBAL_USE(CLog::CLogGlobals).m_logLevel
+#define m_extraLogLevels XBMC_GLOBAL_USE(CLog::CLogGlobals).m_extraLogLevels
static char levelNames[][8] =
{"DEBUG", "INFO", "NOTICE", "WARNING", "ERROR", "SEVERE", "FATAL", "NONE"};
@@ -64,6 +65,8 @@ void CLog::Log(int loglevel, const char *format, ... )
{
static const char* prefixFormat = "%02.2d:%02.2d:%02.2d T:%"PRIu64" %7s: ";
CSingleLock waitLock(critSec);
+ int extras = (loglevel >> LOGMASKBIT) << LOGMASKBIT;
+ loglevel = loglevel & LOGMASK;
#if !(defined(_DEBUG) || defined(PROFILE))
if (m_logLevel > LOG_LEVEL_NORMAL ||
(m_logLevel > LOG_LEVEL_NONE && loglevel >= LOGNOTICE))
@@ -72,6 +75,9 @@ void CLog::Log(int loglevel, const char *format, ... )
if (!m_file)
return;
+ if (extras != 0 && (m_extraLogLevels & extras) == 0)
+ return;
+
SYSTEMTIME time;
GetLocalTime(&time);
@@ -218,6 +224,12 @@ int CLog::GetLogLevel()
return m_logLevel;
}
+void CLog::SetExtraLogLevels(int level)
+{
+ CSingleLock waitLock(critSec);
+ m_extraLogLevels = level;
+}
+
void CLog::OutputDebugString(const std::string& line)
{
#if defined(_DEBUG) || defined(PROFILE)
diff --git a/xbmc/utils/log.h b/xbmc/utils/log.h
index 7ce4cb70ea..eccad11a26 100644
--- a/xbmc/utils/log.h
+++ b/xbmc/utils/log.h
@@ -46,6 +46,7 @@ public:
int m_repeatLogLevel;
std::string m_repeatLine;
int m_logLevel;
+ int m_extraLogLevels;
CCriticalSection critSec;
};
@@ -57,6 +58,7 @@ public:
static bool Init(const char* path);
static void SetLogLevel(int level);
static int GetLogLevel();
+ static void SetExtraLogLevels(int level);
private:
static void OutputDebugString(const std::string& line);
};