You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

19 lines
654 B

  1. module SemanticLogger
  2. # Manage a collection of appenders.
  3. class Appenders < Concurrent::Array
  4. def close
  5. closed_appenders = []
  6. each do |appender|
  7. logger.trace "Closing appender: #{appender.name}"
  8. closed_appenders << appender
  9. appender.flush
  10. appender.close
  11. rescue Exception => e
  12. logger.error "Failed to close appender: #{appender.name}", e
  13. end
  14. # Delete appenders outside the #each above which prevents changes during iteration.
  15. closed_appenders.each { |appender| delete(appender) }
  16. logger.trace 'All appenders closed and removed from appender list'
  17. end
  18. end
  19. end