mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 19:04:32 +02:00
Use unique IDs for log strings that should have repeats supressed
This commit is contained in:
parent
dc9c9fd0ee
commit
6d078f41e7
3 changed files with 54 additions and 7 deletions
|
@ -345,12 +345,17 @@ bool LimitedNodeList::packetSourceAndHashMatchAndTrackBandwidth(const udt::Packe
|
|||
return true;
|
||||
|
||||
} else {
|
||||
static const QString UNKNOWN_REGEX = "Packet of type \\d+ \\([\\sa-zA-Z:]+\\) received from unknown node with UUID";
|
||||
static QString repeatedMessage
|
||||
= LogHandler::getInstance().addRepeatedMessageRegex(UNKNOWN_REGEX);
|
||||
//static const QString UNKNOWN_REGEX = "Packet of type \\d+ \\([\\sa-zA-Z:]+\\) received from unknown node with UUID";
|
||||
//static QString repeatedMessage
|
||||
// = LogHandler::getInstance().addRepeatedMessageRegex(UNKNOWN_REGEX);
|
||||
//qCDebug(networking) << "Packet of type" << headerType
|
||||
// << "received from unknown node with UUID" << uuidStringWithoutCurlyBraces(sourceID);
|
||||
|
||||
qCDebug(networking) << "Packet of type" << headerType
|
||||
<< "received from unknown node with UUID" << uuidStringWithoutCurlyBraces(sourceID);
|
||||
static const int repeatedIDUnknownNode = LogHandler::getInstance().newRepeatedMessageID();
|
||||
QString logString;
|
||||
QDebug debugString(&logString);
|
||||
debugString << "Packet of type" << headerType << "received from unknown node with UUID" << uuidStringWithoutCurlyBraces(sourceID);
|
||||
LogHandler::getInstance().printRepeatedMessage(repeatedIDUnknownNode, LogDebug, QMessageLogContext(), logString);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#include <QtCore/QThread>
|
||||
#include <QtCore/QTimer>
|
||||
|
||||
QMutex LogHandler::_mutex;
|
||||
QMutex LogHandler::_mutex(QMutex::Recursive);
|
||||
|
||||
LogHandler& LogHandler::getInstance() {
|
||||
static LogHandler staticInstance;
|
||||
|
@ -107,13 +107,25 @@ void LogHandler::flushRepeatedMessages() {
|
|||
|
||||
message.messageCount = 0;
|
||||
}
|
||||
|
||||
// New repeat-supress scheme:
|
||||
for (int m = 0; m < (int)_repeatCounts.size(); ++m) {
|
||||
int repeatCount = _repeatCounts[m];
|
||||
if (m > 1) {
|
||||
QString repeatLogMessage = QString(m) + " repeated log entries - Last entry: \"" + _repeatedMessageStrings[m]
|
||||
+ "\"";
|
||||
printMessage(LogSuppressed, QMessageLogContext(), repeatLogMessage);
|
||||
_repeatCounts[m] = 0;
|
||||
_repeatedMessageStrings[m] = QString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString LogHandler::printMessage(LogMsgType type, const QMessageLogContext& context, const QString& message) {
|
||||
QMutexLocker lock(&_mutex);
|
||||
if (message.isEmpty()) {
|
||||
return QString();
|
||||
}
|
||||
QMutexLocker lock(&_mutex);
|
||||
|
||||
if (type == LogDebug) {
|
||||
// for debug messages, check if this matches any of our regexes for repeated log messages
|
||||
|
@ -217,3 +229,28 @@ const QString& LogHandler::addOnlyOnceMessageRegex(const QString& regexString) {
|
|||
_onetimeMessages.push_back(onetimeMessage);
|
||||
return regexString;
|
||||
}
|
||||
|
||||
int LogHandler::newRepeatedMessageID() {
|
||||
QMutexLocker lock(&_mutex);
|
||||
int newMessageId = _currentMessageID;
|
||||
++_currentMessageID;
|
||||
_repeatCounts.push_back(0);
|
||||
_repeatedMessageStrings.resize(_currentMessageID);
|
||||
return newMessageId;
|
||||
}
|
||||
|
||||
void LogHandler::printRepeatedMessage(int messageID, LogMsgType type, const QMessageLogContext & context,
|
||||
const QString & message) {
|
||||
QMutexLocker lock(&_mutex);
|
||||
if (messageID >= _currentMessageID) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (_repeatCounts[messageID] == 0) {
|
||||
printMessage(type, context, message);
|
||||
} else {
|
||||
_repeatedMessageStrings[messageID] = message;
|
||||
}
|
||||
|
||||
++_repeatCounts[messageID];
|
||||
}
|
||||
|
|
|
@ -53,6 +53,8 @@ public:
|
|||
|
||||
const QString& addRepeatedMessageRegex(const QString& regexString);
|
||||
const QString& addOnlyOnceMessageRegex(const QString& regexString);
|
||||
int newRepeatedMessageID();
|
||||
void printRepeatedMessage(int messageID, LogMsgType type, const QMessageLogContext& context, const QString &message);
|
||||
|
||||
private slots:
|
||||
void setupRepeatedMessageFlusher();
|
||||
|
@ -81,6 +83,9 @@ private:
|
|||
};
|
||||
std::vector<OnceOnlyMessage> _onetimeMessages;
|
||||
|
||||
int _currentMessageID { 0 };
|
||||
std::vector<int> _repeatCounts;
|
||||
std::vector<QString> _repeatedMessageStrings;
|
||||
static QMutex _mutex;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue