Module: Oboe::API::Logging

Defined in:
lib/oboe/api/logging.rb

Instance Method Summary collapse

Instance Method Details

#log(layer, label, opts = {}) ⇒ Object

Public: Report an event in an active trace.

layer - The layer the reported event belongs to label - The label for the reported event. See API documentation for

reserved labels and usage.

opts - A hash containing key/value pairs that will be reported along

with this event (optional).

Example

log('logical_layer', 'entry')
log('logical_layer', 'info', { :list_length => 20 })
log('logical_layer', 'exit')

Returns nothing.



23
24
25
# File 'lib/oboe/api/logging.rb', line 23

def log(layer, label, opts={})
  log_event(layer, label, Oboe::Context.createEvent, opts)
end

#log_end(layer, opts = {}) ⇒ Object

Public: Report an exit event.

layer - The layer the reported event belongs to

Returns an xtrace metadata string



78
79
80
81
82
83
# File 'lib/oboe/api/logging.rb', line 78

def log_end(layer, opts={})
  log_event(layer, 'exit', Oboe::Context.createEvent, opts)
  xtrace = Oboe::Context.toString
  Oboe::Context.clear
  xtrace
end

#log_entry(layer, opts = {}) ⇒ Object



85
86
87
# File 'lib/oboe/api/logging.rb', line 85

def log_entry(layer, opts={})
  log_event(layer, 'entry', Oboe::Context.createEvent, opts)
end

#log_event(layer, label, event, opts = {}) ⇒ Object

Internal: Report an event.

layer - The layer the reported event belongs to label - The label for the reported event. See API documentation for

reserved labels and usage.

opts - A hash containing key/value pairs that will be reported along

with this event (optional).

Examples

entry = Oboe::Context.createEvent
log_event('rails', 'entry', exit, { :controller => 'user', :action => 'index' })
exit = Oboe::Context.createEvent
exit.addEdge(entry.)
log_event('rails', 'exit', exit)

Returns nothing.



110
111
112
113
114
115
116
117
118
119
# File 'lib/oboe/api/logging.rb', line 110

def log_event(layer, label, event, opts={})
  event.addInfo('Layer', layer.to_s)
  event.addInfo('Label', label.to_s)
  
  opts.each do |k, v|
    event.addInfo(k.to_s, v.to_s) if valid_key? k
  end if !opts.nil? and opts.any?
  
  Oboe.reporter.sendReport(event)
end

#log_exception(layer, exn) ⇒ Object

Public: Report an exception.

layer - The layer the reported event belongs to exn - The exception to report

Example

begin
  function_without_oboe()
rescue Exception => e
  log_exception('rails', e)
  raise
end

Returns nothing.



42
43
44
45
46
47
48
# File 'lib/oboe/api/logging.rb', line 42

def log_exception(layer, exn)
  log(layer, 'error', {
    :ErrorClass => exn.class.name,
    :Message => exn.message,
    :ErrorBacktrace => exn.backtrace.join("\r\n")
  })
end

#log_exit(layer, opts = {}) ⇒ Object



89
90
91
# File 'lib/oboe/api/logging.rb', line 89

def log_exit(layer, opts={})
  log_event(layer, 'exit', Oboe::Context.createEvent, opts)
end

#log_start(layer, xtrace, opts = {}) ⇒ Object

Public: Decide whether or not to start a trace, and report an event appropriately.

layer - The layer the reported event belongs to xtrace - An xtrace metadata string, or nil. opts - A hash containing key/value pairs that will be reported along

with this event (optional).

Returns nothing.



59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/oboe/api/logging.rb', line 59

def log_start(layer, xtrace, opts={})
  return if Oboe::Config.never?
  
  if xtrace
    Oboe::Context.fromString(xtrace)
  end
  
  if Oboe::Config.tracing?
    log_entry(layer, opts)
  elsif Oboe::Config.always? or Oboe::Config.sample?
    log_event(layer, 'entry', Oboe::Context.startTrace, opts)
  end
end