mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
refactor: Improve toxcore-originated log messages.
This changes ToxLogger to behave as if `qDebug()` were used inside toxcore itself, i.e. with the correct file/line/func.
This commit is contained in:
parent
cc4698db65
commit
31f54d4d1c
@ -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…
x
Reference in New Issue
Block a user