Implement log deduplication to minimize repetitive messages #525
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements a memory mechanism in the logging system to prevent consecutive duplicate log messages from accumulating, addressing the issue where repetitive operations like IP address resolution queries would spam the logs.
Problem
The DDNS Updater application generates many duplicate log messages during normal operation, particularly:
These duplicate messages clutter the logs and make it difficult to identify actual changes or issues.
Solution
Added a thread-safe deduplication mechanism to the logging package (
pkg/logging/logging.go
) that:LogMemory
structure with mutex protection to track the last logged message and occurrence count for each log levelClearDuplicateMemory()
function shows how many times each message was suppressed before clearing the memoryExample
Before this change, repeated IP queries would generate:
After this change:
Implementation Details
Infof()
andErrorf()
functions to check for duplicates before loggingshouldLog()
method that returns false for consecutive identical messagessync.Mutex
Fixes #379.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.