Sha256: 25d12b383cd43bded98bfbcfb92bed35b0d4ca7be7c8cdcbeffbf7b53af0d0d4

Contents?: true

Size: 847 Bytes

Versions: 3

Compression:

Stored size: 847 Bytes

Contents

# frozen_string_literal: false

require "logger"
require_relative "../data_filters/log_data_filter"

##
# This Aspect is responsible for logging
# the input and output of every endpoint called
# in the framework.
module LoggingAspect
  def call_endpoint(logger, *args)
    endpoint_name = args[1].split(".")[1..].join("/")
    logger.info(LogDataFilter.sanitize_for_logging(
                  "Request received for #{endpoint_name} with arguments: #{args[2..]}"
                ))

    begin
      response = super(*args)
      logger.info(LogDataFilter.sanitize_for_logging("Response for #{endpoint_name}: #{response}"))
    rescue StandardError => e
      logger.error(
        LogDataFilter.sanitize_for_logging("Error processing #{endpoint_name}: #{e.message}\n#{e.backtrace.join("\n")}")
      )
      raise e
    end

    response
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
macaw_framework-1.0.5 lib/macaw_framework/aspects/logging_aspect.rb
macaw_framework-1.0.4 lib/macaw_framework/aspects/logging_aspect.rb
macaw_framework-1.0.3 lib/macaw_framework/aspects/logging_aspect.rb