diff --git a/src/log/builder.cr b/src/log/builder.cr index a6ed72b08960..4aab82a94001 100644 --- a/src/log/builder.cr +++ b/src/log/builder.cr @@ -157,4 +157,10 @@ class Log::Builder end false end + + # NOTE: workaround for https://github.com/crystal-lang/crystal/pull/14473 + protected def cleanup_collected_log(log : Log) : Nil + ref = @logs.fetch(log.source) { return } + @logs.delete(log.source) if ref.value.nil? || ref.value == log + end end diff --git a/src/log/log.cr b/src/log/log.cr index c2f7f17771a7..3480cfecf33b 100644 --- a/src/log/log.cr +++ b/src/log/log.cr @@ -10,6 +10,11 @@ class Log @initial_level = level end + def finalize : Nil + # NOTE: workaround for https://github.com/crystal-lang/crystal/pull/14473 + Log.builder.cleanup_collected_log(self) + end + # :nodoc: def changed_level : Severity? @level