From d8b5387aa1c6a8992ddd271b867a9148fc04869e Mon Sep 17 00:00:00 2001 From: pvincent Date: Wed, 11 Sep 2024 12:31:07 +0400 Subject: [PATCH] monkey_patch SemanticLogger::Appenders --- app/controllers/hot_controller.rb | 3 +++ .../semantic_logger/appenders.rb | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 lib/monkey_patches/semantic_logger/appenders.rb diff --git a/app/controllers/hot_controller.rb b/app/controllers/hot_controller.rb index 931c758..7f075e5 100644 --- a/app/controllers/hot_controller.rb +++ b/app/controllers/hot_controller.rb @@ -4,5 +4,8 @@ class HotController < ApplicationController logger.info('callee') logger.info(__callee__) logger.info(__method__) + + # logger.info(ActiveSupport::LogSubscriber.subscribers.map(&:patterns)) + logger.info(ActiveSupport::Notifications.notifier.listeners_for('.*\.action_controller')) end end diff --git a/lib/monkey_patches/semantic_logger/appenders.rb b/lib/monkey_patches/semantic_logger/appenders.rb new file mode 100644 index 0000000..267bdd7 --- /dev/null +++ b/lib/monkey_patches/semantic_logger/appenders.rb @@ -0,0 +1,19 @@ +module SemanticLogger + # Manage a collection of appenders. + class Appenders < Concurrent::Array + def close + closed_appenders = [] + each do |appender| + logger.trace "Closing appender: #{appender.name}" + closed_appenders << appender + appender.flush + appender.close + rescue Exception => e + logger.error "Failed to close appender: #{appender.name}", e + end + # Delete appenders outside the #each above which prevents changes during iteration. + closed_appenders.each { |appender| delete(appender) } + logger.trace 'All appenders closed and removed from appender list' + end + end +end