Sha256: 7395a29b46ba4b9b0c5fc5531c7870f07953c5163439f28504b03e269f8c1069

Contents?: true

Size: 1.8 KB

Versions: 2

Compression:

Stored size: 1.8 KB

Contents

require 'binnacle/resources/event'

module Binnacle
  module Logging
    class Formatter
      def initialize(client)
        @client = client
      end

      def call(severity, datetime, progname, msg)
        unless assets_log_prefix && msg.start_with?(assets_log_prefix)
          session_id, client_id = @client.session_and_client_ids

          event = Binnacle::Event.new()

          logging_tags = current_tags.dup
          if progname
            event.configure_from_logging_progname(progname, @client.logging_channel_id, client_id, session_id, severity, nil, datetime, [], { message: msg })
          elsif defined?(ActiveSupport::TaggedLogging) && logging_tags && !logging_tags.empty? && logging_tags.size > 2
            logging_tags.shift(2)
            event_name = logging_tags.shift
            event.configure_from_logging_progname(event_name, @client.logging_channel_id, client_id, session_id, severity, nil, datetime, logging_tags, { message: msg })
          else
            event.configure(@client.logging_channel_id, 'log', client_id, session_id, severity, nil, datetime, [], { message: msg })
          end

          event
        end
      end

      def tagged(*tags)
        new_tags = push_tags(*tags)
        yield self
      ensure
        pop_tags(new_tags.size)
      end

      def push_tags(*tags)
        tags.flatten.reject(&:blank?).tap do |new_tags|
          current_tags.concat new_tags
        end
      end

      def pop_tags(size = 1)
        current_tags.pop size
      end

      def clear_tags!
        current_tags.clear
      end

      def current_tags
        Thread.current[:activesupport_tagged_logging_tags] ||= []
      end

      def assets_log_prefix
        @assets_log_prefix ||= "Started GET \"#{Rails.application.config.assets.prefix}" if defined?(Rails)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
binnacle-0.5.0 lib/binnacle/logging/formatter.rb
binnacle-0.4.9 lib/binnacle/logging/formatter.rb