This helps with log flooding. Successive repeated log messages will be skipped and counted,
the count will be output when a different message is logged.
A new option of 'keep_repeats' has been added to VIRCADIA_LOG_OPTIONS to disable this.
Set VIRCADIA_LOG_OPTIONS to a string containing these keywords:
color
milliseconds
process_id
thread_id
The separator doesn't matter. Example:
$ export VIRCADIA_LOG_OPTIONS="color milliseconds"
Not all uses of repeated log messages include NetworkLogging.h,
but if they use addRepeatedMessageRegex() they must include
LogHandler.h. Also add second macro for client-supplied
message ID.
This can happen when LogHandler::flushRepetedMessages is called on
the main thread, while the application is printing messages on
a separate thread. The access to the _lastRepeatedMessage QHash was
not guarded.
I've added two mutexes to guard access to both the repeatedMessage
hashes/regexes and the onlyOnceMessages/regexes. This will unfortunately
incur a performance hit for frequent debug logging, but that's better
then crashing.
Also, I've added the ability to print threadIDs as well as Process ids.
This is helpful when debugging multi-threaded access to shared variables.