aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2012-11-27 15:43:11 +0100
committerJoerg Bornemann <joerg.bornemann@digia.com>2012-11-29 14:44:39 +0100
commit29b924ed092ea6b0381fa5f731e9eb5f690a1878 (patch)
treecf2f188f3e609b7d8e38b04a0ebb87ebbf768930
parente7d709fb1365478ab8a3cf93d5be5a197d28ec54 (diff)
Allow for reuse of log level strings
Change-Id: I6b301b7fcd1c95aee6417c1db2bdcb35ed88d97c Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r--src/app/shared/commandlineparser.cpp32
-rw-r--r--src/lib/logging/consolelogger.cpp21
-rw-r--r--src/lib/logging/logger.cpp27
-rw-r--r--src/lib/logging/logger.h2
4 files changed, 48 insertions, 34 deletions
diff --git a/src/app/shared/commandlineparser.cpp b/src/app/shared/commandlineparser.cpp
index 5ea8686a9..ba68c1062 100644
--- a/src/app/shared/commandlineparser.cpp
+++ b/src/app/shared/commandlineparser.cpp
@@ -46,25 +46,12 @@
namespace qbs {
-static QString logLevelToString(LoggerLevel level)
-{
- switch (level) {
- case LoggerError: return QLatin1String("error");
- case LoggerWarning: return QLatin1String("warning");
- case LoggerInfo: return QLatin1String("info");
- case LoggerDebug: return QLatin1String("debug");
- case LoggerTrace: return QLatin1String("trace");
- default: qFatal("%s: Missing case in switch statement", Q_FUNC_INFO);
- }
- return QString(); // Never reached.
-}
-
static LoggerLevel logLevelFromString(const QString &logLevelString)
{
const QList<LoggerLevel> levels = QList<LoggerLevel>() << LoggerError << LoggerWarning
<< LoggerInfo << LoggerDebug << LoggerTrace;
foreach (LoggerLevel l, levels) {
- if (logLevelToString(l) == logLevelString)
+ if (Logger::logLevelName(l) == logLevelString)
return l;
}
throw Error(CommandLineParser::tr("Invalid log level '%1'.").arg(logLevelString));
@@ -72,9 +59,10 @@ static LoggerLevel logLevelFromString(const QString &logLevelString)
static QStringList allLogLevelStrings()
{
- return QStringList() << logLevelToString(LoggerError) << logLevelToString(LoggerWarning)
- << logLevelToString(LoggerInfo) << logLevelToString(LoggerDebug)
- << logLevelToString(LoggerTrace);
+ QStringList result;
+ for (int i = static_cast<int>(LoggerMinLevel); i <= static_cast<int>(LoggerMaxLevel); ++i)
+ result << Logger::logLevelName(static_cast<LoggerLevel>(i));
+ return result;
}
CommandLineParser::CommandLineParser()
@@ -121,9 +109,9 @@ void CommandLineParser::printHelp() const
" .............. Use the specified log level. Possible values are \"%1\".\n"
" The default is \"%2\".\n")
.arg(allLogLevelStrings().join(QLatin1String("\", \"")),
- logLevelToString(Logger::defaultLevel())
+ Logger::logLevelName(Logger::defaultLevel())
#ifdef Q_OS_UNIX
- , logLevelToString(LoggerMinLevel)
+ , Logger::logLevelName(LoggerMinLevel)
#endif
);
}
@@ -169,16 +157,16 @@ void CommandLineParser::doParse()
if (m_showProgress && m_logLevel != LoggerMinLevel) {
qbsInfo() << tr("Setting log level to \"%1\", because option \"--show-progress\""
- " has been given.").arg(logLevelToString(LoggerMinLevel));
+ " has been given.").arg(Logger::logLevelName(LoggerMinLevel));
m_logLevel = LoggerMinLevel;
}
if (m_logLevel < LoggerMinLevel) {
qbsWarning() << tr("Cannot decrease log level as much as specified; using \"%1\".")
- .arg(logLevelToString(LoggerMinLevel));
+ .arg(Logger::logLevelName(LoggerMinLevel));
m_logLevel = LoggerMinLevel;
} else if (m_logLevel > LoggerMaxLevel) {
qbsWarning() << tr("Cannot increase log level as much as specified; using \"%1\".")
- .arg(logLevelToString(LoggerMaxLevel));
+ .arg(Logger::logLevelName(LoggerMaxLevel));
m_logLevel = LoggerMaxLevel;
}
Logger::instance().setLevel(m_logLevel);
diff --git a/src/lib/logging/consolelogger.cpp b/src/lib/logging/consolelogger.cpp
index 8bddba267..5a7457f2a 100644
--- a/src/lib/logging/consolelogger.cpp
+++ b/src/lib/logging/consolelogger.cpp
@@ -46,23 +46,20 @@ void ConsolePrintLogSink::outputLogMessage(LoggerLevel level, const LogMessage &
file = stderr;
if (message.printLogLevel) {
+ QByteArray data = Logger::logLevelTag(level);
+ TextColor color = TextColorDefault;
switch (level) {
- case LoggerError:
- fprintfWrapper(TextColorRed, file, "ERROR: ");
+ case qbs::LoggerError:
+ color = TextColorRed;
break;
- case LoggerWarning:
- fprintfWrapper(TextColorYellow, file, "WARNING: ");
+ case qbs::LoggerWarning:
+ color = TextColorYellow;
break;
- case LoggerInfo:
- fprintf(file, "INFO: ");
- break;
- case LoggerDebug:
- fprintf(file, "DEBUG: ");
- break;
- case LoggerTrace:
- fprintf(file, "TRACE: ");
+ default:
break;
}
+
+ fprintfWrapper(color, file, data);
}
fprintfWrapper(message.textColor, file, "%s\n", message.data.data());
fflush(file);
diff --git a/src/lib/logging/logger.cpp b/src/lib/logging/logger.cpp
index 5b8db5c4f..1c6731a33 100644
--- a/src/lib/logging/logger.cpp
+++ b/src/lib/logging/logger.cpp
@@ -50,6 +50,33 @@ Logger &Logger::instance()
return instance;
}
+QByteArray Logger::logLevelTag(LoggerLevel level)
+{
+ QString str = logLevelName(level).toUpper();
+ if (!str.isEmpty())
+ str.append(QLatin1String(": "));
+ return str.toUtf8();
+}
+
+QString Logger::logLevelName(LoggerLevel level)
+{
+ switch (level) {
+ case qbs::LoggerError:
+ return QLatin1String("error");
+ case qbs::LoggerWarning:
+ return QLatin1String("warning");
+ case qbs::LoggerInfo:
+ return QLatin1String("info");
+ case qbs::LoggerDebug:
+ return QLatin1String("debug");
+ case qbs::LoggerTrace:
+ return QLatin1String("trace");
+ default:
+ break;
+ }
+ return QString();
+}
+
Logger::Logger()
: m_logSink(0)
, m_level(defaultLevel())
diff --git a/src/lib/logging/logger.h b/src/lib/logging/logger.h
index 7f7468f00..d398cd931 100644
--- a/src/lib/logging/logger.h
+++ b/src/lib/logging/logger.h
@@ -48,6 +48,8 @@ public:
static Logger &instance();
static LoggerLevel defaultLevel() { return LoggerInfo; }
+ static QByteArray logLevelTag(LoggerLevel level);
+ static QString logLevelName(LoggerLevel level);
void setLevel(int level);
void setLevel(LoggerLevel level);