diff --git a/lib/logster/message.rb b/lib/logster/message.rb index d0549da5..a04e95ae 100644 --- a/lib/logster/message.rb +++ b/lib/logster/message.rb @@ -113,7 +113,8 @@ def self.default_env # in its own method so it can be overridden def grouping_hash - { message: self.message, severity: self.severity, backtrace: self.backtrace } + message = self.message.gsub(/[0-9a-f]+/i, "X") + { message: message, severity: self.severity, backtrace: self.backtrace } end # todo - memoize? diff --git a/test/logster/test_redis_store.rb b/test/logster/test_redis_store.rb index 0d252ea7..bab2b12c 100644 --- a/test/logster/test_redis_store.rb +++ b/test/logster/test_redis_store.rb @@ -1044,6 +1044,24 @@ def test_truncated_messages_when_they_are_similar_can_still_be_merged end end + def test_messages_that_differ_only_by_numbers_or_hashes_are_merged + config_reset(allow_grouping: true) do + first_message = <<~TEXT + DistributedMutex("download_20450e291e8f1e5ba03ca7f20fb7d9da570c94a6"): + held for too long, expected max: 60 secs, took an extra 73 secs + TEXT + msg = @store.report(Logger::WARN, '', first_message, backtrace: caller) + + second_message = <<~TEXT + DistributedMutex("download_e09ae082c60a351dedec67ed869652862b232a0b"): + held for too long, expected max: 60 secs, took an extra 287 secs + TEXT + msg2 = @store.report(Logger::WARN, '', second_message, backtrace: caller) + + assert_equal(msg.key, msg2.key) + end + end + private def config_reset(configs)