module ActiveModelSerializers::Logging

def logger_tagged_by_active_model_serializers?

def logger_tagged_by_active_model_serializers?
  ActiveModelSerializers.logger.formatter.current_tags.include?('active_model_serializers'.freeze)
end

def notify_render(*)

def notify_render(*)
  event_name = RENDER_EVENT
  ActiveSupport::Notifications.instrument(event_name, notify_render_payload) do
    yield
  end
end

def notify_render_payload

def notify_render_payload
  {
    serializer: serializer || ActiveModel::Serializer::Null,
    adapter: adapter || ActiveModelSerializers::Adapter::Null
  }
end

def tag_logger(*tags)

def tag_logger(*tags)
  if ActiveModelSerializers.logger.respond_to?(:tagged)
    tags.unshift 'active_model_serializers'.freeze unless logger_tagged_by_active_model_serializers?
    ActiveModelSerializers.logger.tagged(*tags) { yield }
  else
    yield
  end
end