aserafin/grape_logging

View on GitHub
lib/grape_logging/formatters/json.rb

Summary

Maintainability
A
0 mins
Test Coverage
module GrapeLogging
  module Formatters
    class Json
      def call(severity, datetime, _, data)
        {
          date: datetime,
          severity: severity,
          data: format(data)
        }.to_json + "\n"
      end

      private

      def format(data)
        if data.is_a?(String) || data.is_a?(Hash)
          data
        elsif data.is_a?(Exception)
          format_exception(data)
        else
          data.inspect
        end
      end

      def format_exception(exception)
        {
          exception: {
            message: exception.message
          }
        }
      end
    end
  end
end