Skip to content

Commit

Permalink
Added mythbackend --setloglevel support
Browse files Browse the repository at this point in the history
This new command will change the log level of the running backend and is
synonymous to the --setverbose that will change the mask.
  • Loading branch information
Beirdo committed Jul 16, 2011
1 parent 787ce64 commit 4c43ec7
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 8 deletions.
10 changes: 5 additions & 5 deletions mythtv/libs/libmythbase/mythlogging.h
Expand Up @@ -33,6 +33,11 @@ typedef enum
LOG_UNKNOWN
} LogLevel_t;

extern MBASE_PUBLIC const char *LogLevelNames[];
extern MBASE_PUBLIC int LogLevelNameCount;
extern MBASE_PUBLIC const char LogLevelShortNames[];
extern MBASE_PUBLIC int LogLevelShortNameCount;

#ifdef _LogLevelNames_
const char *LogLevelNames[] =
{
Expand Down Expand Up @@ -62,11 +67,6 @@ const char LogLevelShortNames[] =
};
int LogLevelShortNameCount = sizeof(LogLevelShortNames) /
sizeof(LogLevelShortNames[0]);
#else
extern MBASE_PUBLIC char *LogLevelNames[];
extern MBASE_PUBLIC int LogLevelNameCount;
extern MBASE_PUBLIC char *LogLevelShortNames[];
extern MBASE_PUBLIC int LogLevelShortNameCount;
#endif
extern MBASE_PUBLIC LogLevel_t logLevel;

Expand Down
4 changes: 3 additions & 1 deletion mythtv/programs/mythbackend/commandlineparser.cpp
Expand Up @@ -72,7 +72,9 @@ void MythBackendCommandLineParser::LoadArguments(void)
add("--printexpire", "printexpire", "ALL",
"Print upcoming list of recordings to be expired.", "");
add("--setverbose", "setverbose", "",
"Change debug level of the existing master backend.", "");
"Change debug mask of the existing master backend.", "");
add("--setloglevel", "setloglevel", "",
"Change logging level of the existing master backend.", "");
add("--user", "username", "",
"Drop permissions to username after starting.", "");
}
Expand Down
2 changes: 1 addition & 1 deletion mythtv/programs/mythbackend/main.cpp
Expand Up @@ -118,7 +118,7 @@ int main(int argc, char **argv)
cmdline.toBool("setverbose") || cmdline.toBool("printsched") ||
cmdline.toBool("testsched") || cmdline.toBool("resched") ||
cmdline.toBool("scanvideos") || cmdline.toBool("clearcache") ||
cmdline.toBool("printexpire"))
cmdline.toBool("printexpire") || cmdline.toBool("setloglevel"))
{
gCoreContext->SetBackend(false);
return handle_command(cmdline);
Expand Down
22 changes: 21 additions & 1 deletion mythtv/programs/mythbackend/main_helpers.cpp
Expand Up @@ -272,7 +272,27 @@ int handle_command(const MythBackendCommandLineParser &cmdline)
else
{
LOG(VB_GENERAL, LOG_ERR,
"Unable to connect to backend, verbose level unchanged ");
"Unable to connect to backend, verbose mask unchanged ");
return GENERIC_EXIT_CONNECT_ERROR;
}
}

if (cmdline.toBool("setloglevel"))
{
if (gCoreContext->ConnectToMasterServer())
{
QString message = "SET_LOG_LEVEL ";
message += cmdline.toString("setloglevel");

RemoteSendMessage(message);
LOG(VB_GENERAL, LOG_INFO,
QString("Sent '%1' message").arg(message));
return GENERIC_EXIT_OK;
}
else
{
LOG(VB_GENERAL, LOG_ERR,
"Unable to connect to backend, log level unchanged ");
return GENERIC_EXIT_CONNECT_ERROR;
}
}
Expand Down
36 changes: 36 additions & 0 deletions mythtv/programs/mythbackend/mainserver.cpp
Expand Up @@ -590,6 +590,9 @@ void MainServer::ProcessRequestWork(MythSocket *sock)
{
if ((listline.size() >= 2) && (listline[1].left(11) == "SET_VERBOSE"))
HandleSetVerbose(listline, pbs);
else if ((listline.size() >= 2) &&
(listline[1].left(13) == "SET_LOG_LEVEL"))
HandleSetLogLevel(listline, pbs);
else
HandleMessage(listline, pbs);
}
Expand Down Expand Up @@ -5119,6 +5122,39 @@ void MainServer::HandleSetVerbose(QStringList &slist, PlaybackSock *pbs)
SendResponse(pbssock, retlist);
}

void MainServer::HandleSetLogLevel(QStringList &slist, PlaybackSock *pbs)
{
MythSocket *pbssock = pbs->getSocket();
QStringList retlist;
QString newstring = slist[1];
LogLevel_t newlevel = LOG_UNKNOWN;

int len = newstring.length();
if (len > 14)
{
newlevel = logLevelGet(newstring.right(len-14));
if (newlevel != LOG_UNKNOWN)
{
logLevel = newlevel;
logPropagateCalc();
LOG(VB_GENERAL, LOG_NOTICE,
QString("Log level changed, new level is: %1")
.arg(LogLevelNames[logLevel]));

retlist << "OK";
}
}

if (newlevel == LOG_UNKNOWN)
{
LOG(VB_GENERAL, LOG_ERR, QString("Invalid SET_VERBOSE string: '%1'")
.arg(newstring));
retlist << "Failed";
}

SendResponse(pbssock, retlist);
}

void MainServer::HandleIsRecording(QStringList &slist, PlaybackSock *pbs)
{
(void)slist;
Expand Down
1 change: 1 addition & 0 deletions mythtv/programs/mythbackend/mainserver.h
Expand Up @@ -178,6 +178,7 @@ class MainServer : public QObject, public MythSocketCBs
void HandleGetRecorderFromNum(QStringList &slist, PlaybackSock *pbs);
void HandleMessage(QStringList &slist, PlaybackSock *pbs);
void HandleSetVerbose(QStringList &slist, PlaybackSock *pbs);
void HandleSetLogLevel(QStringList &slist, PlaybackSock *pbs);
void HandleGenPreviewPixmap(QStringList &slist, PlaybackSock *pbs);
void HandlePixmapLastModified(QStringList &slist, PlaybackSock *pbs);
void HandlePixmapGetIfModified(const QStringList &slist, PlaybackSock *pbs);
Expand Down

0 comments on commit 4c43ec7

Please sign in to comment.