Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions src/Utilities/QGCLogging.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
#include <QtCore/QStringListModel>
#include <QtCore/QTextStream>

QGC_LOGGING_CATEGORY(QGCLoggingLog, "qgc.utilities.qgclogging")

#ifdef Q_OS_WIN

#include <crtdbg.h>
Expand All @@ -37,19 +39,12 @@ static int WindowsCrtReportHook(int reportType, char *message, int *returnValue)

#endif

QGC_LOGGING_CATEGORY(QGCLoggingLog, "QGCLoggingLog")

Q_GLOBAL_STATIC(QGCLogging, _qgcLogging)

static QtMessageHandler defaultHandler = nullptr;

static void msgHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
// Filter via QLoggingCategory rules early
if (!QLoggingCategory(context.category).isDebugEnabled()) {
return;
}

// Format the message using Qt's pattern
const QString message = qFormatLogMessage(type, context, msg);

Expand All @@ -72,7 +67,7 @@ QGCLogging *QGCLogging::instance()
QGCLogging::QGCLogging(QObject *parent)
: QStringListModel(parent)
{
// qCDebug(QGCLoggingLog) << this;
qCDebug(QGCLoggingLog) << this;

_flushTimer.setInterval(kFlushIntervalMSecs);
_flushTimer.setSingleShot(false);
Expand All @@ -88,6 +83,11 @@ QGCLogging::QGCLogging(QObject *parent)
(void) connect(this, &QGCLogging::emitLog, this, &QGCLogging::_threadsafeLog, conntype);
}

QGCLogging::~QGCLogging()
{
qCDebug(QGCLoggingLog) << this;
}

void QGCLogging::installHandler(bool quietWindowsAsserts)
{
#ifdef Q_OS_WIN
Expand All @@ -99,7 +99,7 @@ void QGCLogging::installHandler(bool quietWindowsAsserts)
#endif

// Define the format for qDebug/qWarning/etc output
qSetMessagePattern(QStringLiteral("%{time process} - %{type}: %{message} (%{category}:%{function}:%{line})"));
qSetMessagePattern(QStringLiteral("%{category}:: %{time process} - %{type}: %{message} (%{function}:%{line})"));

// Install our custom handler
defaultHandler = qInstallMessageHandler(msgHandler);
Expand Down
1 change: 1 addition & 0 deletions src/Utilities/QGCLogging.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class QGCLogging : public QStringListModel

public:
explicit QGCLogging(QObject *parent = nullptr);
~QGCLogging();

/// Get the singleton instance
static QGCLogging *instance();
Expand Down
19 changes: 19 additions & 0 deletions src/Utilities/QGCLoggingCategory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,21 @@ QGC_LOGGING_CATEGORY(QGCLoggingCategoryRegisterLog, "qgc.utilities.qgcloggingcat

Q_GLOBAL_STATIC(QGCLoggingCategoryRegister, _QGCLoggingCategoryRegisterInstance);

static QLoggingCategory::CategoryFilter defaultCategoryFilter = nullptr;

static void qgcCategoryFilter(QLoggingCategory *category)
{
if (defaultCategoryFilter) {
defaultCategoryFilter(category);
}

// const QString categoryName = QString(category->categoryName());
// if (qstrncmp(category->categoryName(), "qgc.", 4) == 0) {
// QGCLoggingCategoryRegister::instance()->registerCategory(category->categoryName());
// category->setEnabled(QtDebugMsg, true);
// }
}

QGCLoggingCategoryRegister *QGCLoggingCategoryRegister::instance()
{
return _QGCLoggingCategoryRegisterInstance();
Expand Down Expand Up @@ -98,5 +113,9 @@ void QGCLoggingCategoryRegister::setFilterRulesFromSettings(const QString &comma
filterRules += QStringLiteral("qt.qml.connections=false");

qCDebug(QGCLoggingCategoryRegisterLog) << "Filter rules" << filterRules;
const QLoggingCategory::CategoryFilter categoryFilter = QLoggingCategory::installFilter(qgcCategoryFilter);
if (!defaultCategoryFilter) {
defaultCategoryFilter = categoryFilter;
}
QLoggingCategory::setFilterRules(filterRules);
}
Loading