Browse Source

Merge pull request #5307

iphydf (1):
      refactor: Improve toxcore-originated log messages.
pull/4621/merge
sudden6 7 years ago
parent
commit
5e9803eb4b
No known key found for this signature in database
GPG Key ID: 279509B499E032B9
  1. 55
      src/core/toxlogger.cpp

55
src/core/toxlogger.cpp

@ -7,54 +7,45 @@
#include <QString> #include <QString>
#include <QStringBuilder> #include <QStringBuilder>
/** namespace ToxLogger {
* @brief Map TOX_LOG_LEVEL to a string namespace {
* @param level log level
* @return Descriptive string for the log level QByteArray cleanPath(const char *file)
*/ {
QString getToxLogLevel(TOX_LOG_LEVEL level) { // for privacy, make the path relative to the c-toxcore source directory
switch (level) { const QRegularExpression pathCleaner(QLatin1Literal{"[\\s|\\S]*c-toxcore."});
case TOX_LOG_LEVEL_TRACE: QByteArray cleanedPath = QString{file}.remove(pathCleaner).toUtf8();
return QLatin1Literal("TRACE"); cleanedPath.append('\0');
case TOX_LOG_LEVEL_DEBUG: return cleanedPath;
return QLatin1Literal("DEBUG");
case TOX_LOG_LEVEL_INFO:
return QLatin1Literal("INFO ");
case TOX_LOG_LEVEL_WARNING:
return QLatin1Literal("WARN ");
case TOX_LOG_LEVEL_ERROR:
return QLatin1Literal("ERROR");
default:
// Invalid log level
return QLatin1Literal("INVAL");
}
} }
} // namespace
/** /**
* @brief Log message handler for toxcore log messages * @brief Log message handler for toxcore log messages
* @note See tox.h for the parameter definitions * @note See tox.h for the parameter definitions
*/ */
void ToxLogger::onLogMessage(Tox *tox, TOX_LOG_LEVEL level, const char *file, uint32_t line, void onLogMessage(Tox *tox, TOX_LOG_LEVEL level, const char *file, uint32_t line,
const char *func, const char *message, void *user_data) const char *func, const char *message, void *user_data)
{ {
// for privacy, make the path relative to the c-toxcore source directory const QByteArray cleanedPath = cleanPath(file);
const QRegularExpression pathCleaner(QLatin1Literal{"[\\s|\\S]*c-toxcore."});
const QString cleanPath = QString{file}.remove(pathCleaner);
const QString logMsg = getToxLogLevel(level) % QLatin1Literal{":"} % cleanPath
% QLatin1Literal{":"} % func % QStringLiteral(":%1: ").arg(line)
% message;
switch (level) { switch (level) {
case TOX_LOG_LEVEL_TRACE: case TOX_LOG_LEVEL_TRACE:
return; // trace level generates too much noise to enable by default return; // trace level generates too much noise to enable by default
case TOX_LOG_LEVEL_DEBUG: case TOX_LOG_LEVEL_DEBUG:
QMessageLogger(cleanedPath.data(), line, func).debug() << message;
break;
case TOX_LOG_LEVEL_INFO: case TOX_LOG_LEVEL_INFO:
qDebug() << logMsg; QMessageLogger(cleanedPath.data(), line, func).info() << message;
break; break;
case TOX_LOG_LEVEL_WARNING: case TOX_LOG_LEVEL_WARNING:
QMessageLogger(cleanedPath.data(), line, func).warning() << message;
break;
case TOX_LOG_LEVEL_ERROR: case TOX_LOG_LEVEL_ERROR:
qWarning() << logMsg; QMessageLogger(cleanedPath.data(), line, func).critical() << message;
break;
} }
} }
} // namespace ToxLogger

Loading…
Cancel
Save