Sha256: da881a61da78b935ba2396a84c9d97e5f05045f345a6228bcaa5385da5fb7ffb

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

require "gn/tracker/version"
require "logstash-logger"

module Gn
  class Tracker
    class << self
      attr_writer :configuration

      def configuration
        @configuration ||= Configuration.new
      end
    end

    def self.configure
      yield(configuration)
    end

    def initialize
      @logger = LogStashLogger.new(
        type: :file,
        sync: true,
        path: self.class.configuration.path
      )
    end

    def track_unstruct_event(
      message:,
      schema:,
      application: self.class.configuration.application,
      true_timestamp: DateTime.now.strftime('%Q'),
      contexts: []
    )
      event = LogStash::Event.new(
        message: message.to_json,
        application: application,
        schema: schema,
        true_timestamp: true_timestamp,
        contexts: contexts.to_json
      )
      @logger.info event
    end

    class Configuration
      attr_accessor :application, :path

      def initialize
        @application = ENV.fetch('GN_TRACKER_APPLICATION') { 'GN_TRACKER' }
        @path = '/tmp/logstash'
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gn-tracker-0.4.0 lib/gn/tracker.rb