The debugonce method scans an array to see if the message has already been logged. https://github.com/puppetlabs/facter/blob/ffc9febe3e6dad67891e0209782ced0c9fb6040b/lib/facter/framework/logging/logger.rb#L118 It should use a SortedSet instead.