Module: ASIR::Log

Included in:
Coder, Transport
Defined in:
lib/asir/log.rb

Overview

!SLIDE Diagnostic Logging

Logging mixin.

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

@@enabled =
false

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#_loggerObject

Returns the value of attribute _logger.



7
8
9
# File 'lib/asir/log.rb', line 7

def _logger
  @_logger
end

Class Method Details

.enabledObject



15
16
17
# File 'lib/asir/log.rb', line 15

def self.enabled
  @@enabled
end

.enabled=(x) ⇒ Object



18
19
20
# File 'lib/asir/log.rb', line 18

def self.enabled= x
  @@enabled = x
end

.included(target) ⇒ Object



9
10
11
12
# File 'lib/asir/log.rb', line 9

def self.included target
  super
  target.send(:extend, ClassMethods)
end

Instance Method Details

#_log(msg = nil) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/asir/log.rb', line 41

def _log msg = nil
  return unless _log_enabled?
  msg ||= yield if block_given?
  msg = String === msg ? msg : _log_format(msg)
  msg = "  #{$$} #{Module === self ? self : self.class} #{msg}"
  case @_logger
  when Proc
    @_logger.call msg
  when IO
    @_logger.puts msg
  else
    $stderr.puts msg
  end
  nil
end

#_log_enabled=(x) ⇒ Object



31
32
33
# File 'lib/asir/log.rb', line 31

def _log_enabled= x
  @_log_enabled = x
end

#_log_enabled?Boolean

Returns:

  • (Boolean)


35
36
37
38
39
# File 'lib/asir/log.rb', line 35

def _log_enabled?
  ASIR::Log.enabled || 
    @_log_enabled || 
    self.class._log_enabled?
end

#_log_format(obj) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/asir/log.rb', line 66

def _log_format obj
  case obj
  when Exception
    msg = "#{obj.inspect}"
    msg << "\n    #{obj.backtrace * "\n    "}" if false
    msg
  when Array
    obj.map { | x | _log_format x } * ", "
  else
    obj.inspect
  end
end

#_log_result(msg) ⇒ Object



57
58
59
60
61
62
63
64
# File 'lib/asir/log.rb', line 57

def _log_result msg
  _log { 
    msg = String === msg ? msg : _log_format(msg);
    "#{msg} => ..." }
  result = yield
  _log { "#{msg} => \n    #{result.inspect}" }
  result
end