Module: Yawl::Log

Extended by:
Log
Included in:
Log
Defined in:
lib/yawl/log.rb

Instance Method Summary collapse

Instance Method Details

#elapsed_since(t0) ⇒ Object



8
9
10
# File 'lib/yawl/log.rb', line 8

def elapsed_since(t0)
  "%dms" % (Time.now - t0)
end

#log(data, &block) ⇒ Object



32
33
34
35
36
37
38
39
40
41
# File 'lib/yawl/log.rb', line 32

def log(data, &block)
  if Config.log_quiet?
    block.call if block
  else
    params = { }
    params[:app] = Config.app if Config.app
    params[:source] = Config.deploy if Config.deploy
    Scrolls.log(params.merge(data), &block)
  end
end

#log_measure(data) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/yawl/log.rb', line 12

def log_measure(data)
  if Config.app
    measure_base = "#{Config.app}.#{data[:ns]}.#{data[:fn]}"
  else
    measure_base = "#{data[:ns]}.#{data[:fn]}"
  end

  begin
    t0 = Time.now
    log(data.merge(at: "start"))
    log_control = OpenStruct.new(data.merge(finish_at: "finish"))
    result = yield(log_control)
    log(data.merge("measure##{measure_base}.#{log_control.finish_at}" => elapsed_since(t0), at: log_control.finish_at))
    result
  rescue => error
    log(data.merge("measure##{measure_base}.exception" => elapsed_since(t0), at: "exception", "class" => error.class, message: error.message))
    raise error
  end
end