Sha256: 77b7cbbd041ee550bd0d727d21ba59692e7cd0123bef091a27bdb7e96f18a4f2

Contents?: true

Size: 1.48 KB

Versions: 5

Compression:

Stored size: 1.48 KB

Contents

require "timber/context"

module Timber
  module Contexts
    # The HTTP context adds data about the current HTTP request being processed to your logs.
    # This allows your to tail and filter by this data. A very useful piece of data this
    # captures is the request ID. This gives you the ability to trace requests and view logs
    # for a specific request only. For example, say you've searched your logs and found the
    # specific line you are looking for, but it lacks context. With Timber you can simply
    # click the request ID and "zoom out" to view all logs for that request. This gives you
    # complete picture of how the log line in questio was generated.
    #
    # @note This context should be installed automatically through integrations,
    #   such as the {Intregrations::Rack::HTTPContext} rack middleware.
    class HTTP < Context
      @keyspace = :http

      attr_reader :method, :path, :remote_addr, :request_id

      def initialize(attributes)
        @method = attributes[:method] || raise(ArgumentError.new(":method is required"))
        @path = attributes[:path] || raise(ArgumentError.new(":path is required"))
        @remote_addr = attributes[:remote_addr]
        @request_id = attributes[:request_id]
      end

      # Builds a hash representation of containing simply objects, suitable for serialization.
      def as_json(_options = {})
        {:method => method, :path => path, :remote_addr => remote_addr, :request_id => request_id}
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
timber-2.1.0.rc5 lib/timber/contexts/http.rb
timber-2.1.0.rc4 lib/timber/contexts/http.rb
timber-2.1.0.rc3 lib/timber/contexts/http.rb
timber-2.1.0.rc2 lib/timber/contexts/http.rb
timber-2.1.0.rc1 lib/timber/contexts/http.rb