Skip to content

Commit

Permalink
Merged loggingdefs.h into verbosedefs.h
Browse files Browse the repository at this point in the history
There's no point in having these separate.  Now both VB_* and LOG_* are being
defined by macros that will make maintenance simpler for the future.
  • Loading branch information
Beirdo committed Jul 24, 2011
1 parent 881c7a3 commit 159cada
Show file tree
Hide file tree
Showing 6 changed files with 96 additions and 79 deletions.
80 changes: 64 additions & 16 deletions mythtv/libs/libmythbase/logging.cpp
Expand Up @@ -14,7 +14,6 @@

using namespace std;

#define _LogLevelNames_
#include "mythlogging.h"
#include "logging.h"
#include "mythconfig.h"
Expand Down Expand Up @@ -95,13 +94,22 @@ typedef struct {
bool additive;
QString helpText;
} VerboseDef;

typedef QMap<QString, VerboseDef *> VerboseMap;

typedef struct {
int value;
QString name;
char shortname;
} LoglevelDef;
typedef QMap<int, LoglevelDef *> LoglevelMap;

bool verboseInitialized = false;
VerboseMap verboseMap;
QMutex verboseMapMutex;

LoglevelMap loglevelMap;
QMutex loglevelMapMutex;

const uint64_t verboseDefaultInt = VB_GENERAL;
const char *verboseDefaultStr = " general";

Expand All @@ -113,6 +121,7 @@ QString userDefaultValueStr = QString(verboseDefaultStr);
bool haveUserDefaultValues = false;

void verboseAdd(uint64_t mask, QString name, bool additive, QString helptext);
void loglevelAdd(int value, QString name, char shortname);
void verboseInit(void);
void verboseHelp();

Expand Down Expand Up @@ -233,11 +242,22 @@ bool FileLogger::logmsg(LoggingItem_t *item)
strcat( timestamp, usPart );
length = strlen( timestamp );

char shortname;

{
QMutexLocker locker(&loglevelMapMutex);
LoglevelMap::iterator it = loglevelMap.find(item->level);
if (it == loglevelMap.end())
shortname = '-';
else
shortname = (*it)->shortname;
}

if (m_fd == 1)
{
// Stdout
snprintf( line, MAX_STRING_LENGTH, "%s %c %s\n", timestamp,
LogLevelShortNames[item->level], item->message );
shortname, item->message );
}
else
{
Expand All @@ -247,15 +267,13 @@ bool FileLogger::logmsg(LoggingItem_t *item)
if( tid )
snprintf( line, MAX_STRING_LENGTH,
"%s %c [%d/%d] %s %s:%d (%s) - %s\n",
timestamp, LogLevelShortNames[item->level], pid, tid,
threadName, item->file, item->line, item->function,
item->message );
timestamp, shortname, pid, tid, threadName, item->file,
item->line, item->function, item->message );
else
snprintf( line, MAX_STRING_LENGTH,
"%s %c [%d] %s %s:%d (%s) - %s\n",
timestamp, LogLevelShortNames[item->level], pid,
threadName, item->file, item->line, item->function,
item->message );
timestamp, shortname, pid, threadName, item->file,
item->line, item->function, item->message );
}

int result = write( m_fd, line, strlen(line) );
Expand Down Expand Up @@ -867,7 +885,7 @@ void logPropagateCalc(void)
if (logPropagateOpts.propagate)
logPropagateArgs += " --logpath " + logPropagateOpts.path;

QString name = QString(LogLevelNames[logLevel]).toLower();
QString name = logLevelGetName(logLevel);
name.remove(0, 4);
logPropagateArgs += " --loglevel " + name;

Expand Down Expand Up @@ -905,8 +923,8 @@ void logStart(QString logfile, int quiet, bool daemon, int facility,
return;

logLevel = level;
LOG(VB_GENERAL, LOG_CRIT, QString("Setting Log Level to %1")
.arg(LogLevelNames[logLevel]));
LOG(VB_GENERAL, LOG_CRIT, QString("Setting Log Level to LOG_%1")
.arg(logLevelGetName(logLevel).toUpper()));

logPropagateOpts.propagate = propagate;
logPropagateOpts.quiet = quiet;
Expand Down Expand Up @@ -1055,16 +1073,29 @@ LogLevel_t logLevelGet(QString level)
{
int i;

level = "LOG_" + level.toUpper();
for( i = LOG_EMERG; i < LOG_UNKNOWN; i++ )
QMutexLocker locker(&loglevelMapMutex);

for( LoglevelMap::iterator it = loglevelMap.begin();
it != loglevelMap.end(); it++)
{
if( level == LogLevelNames[i] )
return (LogLevel_t)i;
LoglevelDef *item = (*it);
if ( item->name == level.toLower() )
return (LogLevel_t)item->value;
}

return LOG_UNKNOWN;
}

QString logLevelGetName(LogLevel_t level)
{
QMutexLocker locker(&loglevelMapMutex);
LoglevelMap::iterator it = loglevelMap.find((int)level);

if ( it == loglevelMap.end() )
return QString("unknown");

return (*it)->name;
}

void verboseAdd(uint64_t mask, QString name, bool additive, QString helptext)
{
Expand All @@ -1083,10 +1114,27 @@ void verboseAdd(uint64_t mask, QString name, bool additive, QString helptext)
verboseMap.insert(name, item);
}

void loglevelAdd(int value, QString name, char shortname)
{
LoglevelDef *item = new LoglevelDef;

item->value = value;
name.detach();
// LOG_CRIT -> crit
name.remove(0, 4);
name = name.toLower();
item->name = name;
item->shortname = shortname;

loglevelMap.insert(value, item);
}

void verboseInit(void)
{
QMutexLocker locker(&verboseMapMutex);
QMutexLocker locker2(&loglevelMapMutex);
verboseMap.clear();
loglevelMap.clear();

// This looks funky, so I'll put some explanation here. The verbosedefs.h
// file gets included as part of the mythlogging.h include, and at that
Expand Down
1 change: 0 additions & 1 deletion mythtv/libs/libmythbase/logging.h
Expand Up @@ -15,7 +15,6 @@

#include "mythbaseexp.h" // MBASE_PUBLIC , etc.
#include "verbosedefs.h"
#include "loggingdefs.h"

#define LOGLINE_MAX 2048

Expand Down
60 changes: 0 additions & 60 deletions mythtv/libs/libmythbase/loggingdefs.h

This file was deleted.

2 changes: 1 addition & 1 deletion mythtv/libs/libmythbase/mythlogging.h
Expand Up @@ -8,7 +8,6 @@
#include <errno.h>

#include "mythbaseexp.h" // MBASE_PUBLIC , etc.
#include "loggingdefs.h"
#include "verbosedefs.h"

#ifdef __cplusplus
Expand Down Expand Up @@ -64,6 +63,7 @@ MBASE_PUBLIC void threadRegister(QString name);
MBASE_PUBLIC void threadDeregister(void);
MBASE_PUBLIC int syslogGetFacility(QString facility);
MBASE_PUBLIC LogLevel_t logLevelGet(QString level);
MBASE_PUBLIC QString logLevelGetName(LogLevel_t level);
MBASE_PUBLIC int verboseArgParse(QString arg);

/// Verbose helper function for ENO macro
Expand Down
30 changes: 30 additions & 0 deletions mythtv/libs/libmythbase/verbosedefs.h
Expand Up @@ -26,6 +26,10 @@
#undef VERBOSE_POSTAMBLE
#undef VERBOSE_MAP

#undef LOGLEVEL_PREAMBLE
#undef LOGLEVEL_POSTAMBLE
#undef LOGLEVEL_MAP

#ifdef _IMPLEMENT_VERBOSE

// This is used to actually implement the mask in mythlogging.cpp
Expand All @@ -34,6 +38,11 @@
#define VERBOSE_MAP(name,mask,additive,help) \
verboseAdd((uint64_t)(mask),QString(#name),(bool)(additive),QString(help));

#define LOGLEVEL_PREAMBLE
#define LOGLEVEL_POSTAMBLE
#define LOGLEVEL_MAP(name,value,shortname) \
loglevelAdd((int)(value),QString(#name),(char)(shortname));

#else // !defined(_IMPLEMENT_VERBOSE)

// This is used to define the enumerated type (used by all files)
Expand All @@ -45,6 +54,13 @@
#define VERBOSE_MAP(name,mask,additive,help) \
name = (uint64_t)(mask),

#define LOGLEVEL_PREAMBLE \
typedef enum {
#define LOGLEVEL_POSTAMBLE \
} LogLevel_t;
#define LOGLEVEL_MAP(name,value,shortname) \
name = (int)(value),

#endif

VERBOSE_PREAMBLE
Expand Down Expand Up @@ -128,4 +144,18 @@ VERBOSE_MAP(VB_NONE, 0x00000000, false,
"NO debug output")
VERBOSE_POSTAMBLE


LOGLEVEL_PREAMBLE
LOGLEVEL_MAP(LOG_ANY, -1, ' ')
LOGLEVEL_MAP(LOG_EMERG, 0, '!')
LOGLEVEL_MAP(LOG_ALERT, 1, 'A')
LOGLEVEL_MAP(LOG_CRIT, 2, 'C')
LOGLEVEL_MAP(LOG_ERR, 3, 'E')
LOGLEVEL_MAP(LOG_WARNING, 4, 'W')
LOGLEVEL_MAP(LOG_NOTICE, 5, 'N')
LOGLEVEL_MAP(LOG_INFO, 6, 'I')
LOGLEVEL_MAP(LOG_DEBUG, 7, 'D')
LOGLEVEL_MAP(LOG_UNKNOWN, 8, '-')
LOGLEVEL_POSTAMBLE

#endif
2 changes: 1 addition & 1 deletion mythtv/programs/mythbackend/mainserver.cpp
Expand Up @@ -5151,7 +5151,7 @@ void MainServer::HandleSetLogLevel(QStringList &slist, PlaybackSock *pbs)
logPropagateCalc();
LOG(VB_GENERAL, LOG_NOTICE,
QString("Log level changed, new level is: %1")
.arg(LogLevelNames[logLevel]));
.arg(logLevelGetName(logLevel)));

retlist << "OK";
}
Expand Down

0 comments on commit 159cada

Please sign in to comment.