Class: StateFu::Logger

Inherits:
Object show all
Defined in:
lib/support/logger.rb

Overview

TODO - spec coverage

Provide logging facilities, including the ability to use a shared logger.

Use Rails’ log if running as a rails plugin; allow independent control of StateFu log level.

Constant Summary collapse

DEBUG =
0
INFO =
1
WARN =
2
ERROR =
3
FATAL =
4
UNKNOWN =
5
ENV_LOG_LEVEL =
'STATEFU_LOGLEVEL'
DEFAULT_LEVEL =
INFO
DEFAULT_SHARED_LOG_PREFIX =
'[StateFu] '
@@prefix =
DEFAULT_SHARED_LOG_PREFIX
@@logger =
nil
@@suppress =
false
@@shared =
false
@@log_level =
nil

Class Method Summary collapse

Class Method Details

.add(severity, message = nil, progname = nil, &block) ⇒ Object



81
82
83
84
85
86
87
# File 'lib/support/logger.rb', line 81

def self.add(severity, message = nil, progname = nil, &block)
  severity = parse_log_level( severity )
  return if suppressed?( severity )
  message = [prefix, (message || (block && block.call) || progname).to_s].compact.join
  # message = "#{message}\n" unless message[-1] == ?\n
  instance.add( severity, message )
end

.debug(progname = nil, &block) ⇒ Object



89
# File 'lib/support/logger.rb', line 89

def self.debug   progname = nil, █ add DEBUG,   progname, █ end

.error(progname = nil, &block) ⇒ Object



92
# File 'lib/support/logger.rb', line 92

def self.error   progname = nil, █ add ERROR,   progname, █ end

.fatal(progname = nil, &block) ⇒ Object



93
# File 'lib/support/logger.rb', line 93

def self.fatal   progname = nil, █ add FATAL,   progname, █ end

.info(progname = nil, &block) ⇒ Object



90
# File 'lib/support/logger.rb', line 90

def self.info    progname = nil, █ add INFO,    progname, █ end

.initial_log_levelObject



41
42
43
44
45
46
47
# File 'lib/support/logger.rb', line 41

def self.initial_log_level
  if env_level = ENV[ENV_LOG_LEVEL]
    parse_log_level( env_level )
  else
    DEFAULT_LEVEL
  end
end

.instanceObject



69
70
71
# File 'lib/support/logger.rb', line 69

def self.instance
  @@logger ||= set_logger(Logger.default_logger)
end

.levelObject



49
50
51
# File 'lib/support/logger.rb', line 49

def self.level
  @@log_level ||= initial_log_level
end

.level=(new_level) ⇒ Object



53
54
55
# File 'lib/support/logger.rb', line 53

def self.level=( new_level )
  @@log_level = parse_log_level(new_level)
end

.logger=(logger) ⇒ Object



65
66
67
# File 'lib/support/logger.rb', line 65

def self.logger= logger
  set_logger logger
end

.new(logger = $stdout, options = {}) ⇒ Object



35
36
37
38
39
# File 'lib/support/logger.rb', line 35

def self.new( logger = $stdout, options={} )
  self.suppress = false
  self.logger   = logger, options
  self
end

.prefixObject



61
62
63
# File 'lib/support/logger.rb', line 61

def self.prefix
  shared? ? @@prefix : nil
end

.set_logger(logger, options = { :shared => false }) ⇒ Object

setter for logger instance



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/support/logger.rb', line 101

def self.set_logger( logger, options = { :shared => false } )
  case logger
  when String
    file     = File.open(logger, File::WRONLY | File::APPEND)        
    @@logger = Logger.activesupport_logger_available? ? ActiveSupport::BufferedLogger.new(file) : ::Logger.new(file)
  when ::Logger
    @@logger = logger
  when Logger.activesupport_logger_available? && ActiveSupport::BufferedLogger
    @@logger = logger
  else
    raise ArgumentError.new
  end
  self.shared = !!options.symbolize_keys![:shared]
  if shared?
    @@prefix = options[:prefix] || DEFAULT_SHARED_LOG_PREFIX
    puts "shared :: #{@@prefix} #{prefix}"
  end      
  if lvl = options[:level] || options[:log_level]
    self.level = lvl
  end      
  instance
end

.shared?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/support/logger.rb', line 57

def self.shared?
  !! @@shared
end

.suppress!Object



73
74
75
# File 'lib/support/logger.rb', line 73

def self.suppress!
  self.suppress = true
end

.suppressed?(severity = DEBUG) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/support/logger.rb', line 77

def self.suppressed?(severity = DEBUG)
  suppress == true || severity < level
end

.unknown(progname = nil, &block) ⇒ Object



94
# File 'lib/support/logger.rb', line 94

def self.unknown progname = nil, &block; add UNKNOWN, progname, &block; end

.warn(progname = nil, &block) ⇒ Object



91
# File 'lib/support/logger.rb', line 91

def self.warn    progname = nil, &block; add WARN,    progname, &block; end