5 changed files with 82 additions and 13 deletions
			
			
		- 
					1Gemfile
 - 
					2Gemfile.lock
 - 
					12app/controllers/scores_controller.rb
 - 
					44lib/formatters/base.rb
 - 
					36lib/formatters/basic_formatter.rb
 
@ -0,0 +1,44 @@ | 
				
			|||
module SemanticLogger | 
				
			|||
  class Base | 
				
			|||
    # Log message at the specified level | 
				
			|||
    def log_internal(level, index, message = nil, payload = nil, exception = nil) | 
				
			|||
      # Handle variable number of arguments by detecting exception object and payload hash. | 
				
			|||
      if exception.nil? && payload.nil? && message.respond_to?(:backtrace) && message.respond_to?(:message) | 
				
			|||
        exception = message | 
				
			|||
        message   = nil | 
				
			|||
      elsif exception.nil? && payload && payload.respond_to?(:backtrace) && payload.respond_to?(:message) | 
				
			|||
        exception = payload | 
				
			|||
        payload   = nil | 
				
			|||
        # elsif payload && !payload.is_a?(Hash) | 
				
			|||
        #   message = message.nil? ? payload : "#{message} -- #{payload}" | 
				
			|||
        #   payload = nil | 
				
			|||
      end | 
				
			|||
 | 
				
			|||
      log = Log.new(name, level, index) | 
				
			|||
      should_log = | 
				
			|||
        if exception.nil? && payload.nil? && message.is_a?(Hash) | 
				
			|||
          # All arguments as a hash in the message. | 
				
			|||
          log.assign(**log.extract_arguments(message)) | 
				
			|||
        elsif exception.nil? && message && payload && payload.is_a?(Hash) | 
				
			|||
          # Message supplied along with a hash with the remaining arguments. | 
				
			|||
          log.assign(**log.extract_arguments(payload, message)) | 
				
			|||
        else | 
				
			|||
          # All fields supplied directly. | 
				
			|||
          log.assign(message:, payload:, exception:) | 
				
			|||
        end | 
				
			|||
 | 
				
			|||
      # Add result of block to message or payload if not nil | 
				
			|||
      if block_given? | 
				
			|||
        result = yield(log) | 
				
			|||
        if result.is_a?(String) | 
				
			|||
          log.message = log.message.nil? ? result : "#{log.message} -- #{result}" | 
				
			|||
        elsif result.is_a?(Hash) | 
				
			|||
          log.assign_hash(result) | 
				
			|||
        end | 
				
			|||
      end | 
				
			|||
 | 
				
			|||
      # Log level may change during assign due to :on_exception_level | 
				
			|||
      self.log(log) if should_log && should_log?(log) | 
				
			|||
    end | 
				
			|||
  end | 
				
			|||
end | 
				
			|||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue