Sha256: 6392cee747d7c6cf89f8ab1783cb5efbae5735ec1759a0273963afc8a17feaa4

Contents?: true

Size: 838 Bytes

Versions: 4

Compression:

Stored size: 838 Bytes

Contents

require 'json'

module Roqua
  class LogWrapper
    attr_reader :logger

    def initialize(logger)
      @logger  = logger
    end

    def add(level, message, options = {})
      logger.send(level, "#{Roqua.appname}.#{message} #{options.to_json}".strip)
    end

    [:fatal, :error, :warn, :info, :debug].each do |level|
      define_method(level) do |*args|
        add(level, *args)
      end
    end

    def lifecycle(message, options = {})
      started_at = Time.now.to_f
      info("#{message}:started", options)
      value = yield
      finished_at = Time.now.to_f
      duration = finished_at - started_at
      info("#{message}:finished", {duration: duration}.merge(options))
      value
    rescue => e
      error("#{message}:failed", {exception: e.class, message: e.message}.merge(options))
      raise
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
roqua-support-0.1.9 lib/roqua/support/log_wrapper.rb
roqua-support-0.1.8 lib/roqua/support/log_wrapper.rb
roqua-support-0.1.7 lib/roqua/support/log_wrapper.rb
roqua-support-0.1.6 lib/roqua/support/log_wrapper.rb