Class: Mode::Logger

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

Constant Summary collapse

DEBUG =

For Convenience

::Logger::DEBUG
WARN =
::Logger::WARN
INFO =
::Logger::INFO
ERROR =
::Logger::ERROR
FATAL =
::Logger::FATAL

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Logger

Returns a new instance of Logger.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/mode/logger.rb', line 39

def initialize(options = {})
  @enabled = true
  @mutex = Mutex.new # Keep it secret, keep it safe

  path = options[:path] || self.class.default_path
  level = options[:level] || self.class.default_level
  formatter = options[:formatter] || self.class.default_formatter

  ensure_log_path(path)

  @logger = ::Logger.new(path, rotate_freq)

  set_log_level(level)
  set_log_formatter(formatter)
end

Class Attribute Details

.instance(logger = nil) ⇒ Object (readonly)

Returns the value of attribute instance.



105
106
107
# File 'lib/mode/logger.rb', line 105

def instance
  @instance
end

.mutexObject (readonly)

Returns the value of attribute mutex.



104
105
106
# File 'lib/mode/logger.rb', line 104

def mutex
  @mutex
end

Instance Attribute Details

#enabledObject (readonly)

Returns the value of attribute enabled.



37
38
39
# File 'lib/mode/logger.rb', line 37

def enabled
  @enabled
end

#loggerObject (readonly)

Returns the value of attribute logger.



34
35
36
# File 'lib/mode/logger.rb', line 34

def logger
  @logger
end

#mutexObject (readonly)

Returns the value of attribute mutex.



35
36
37
# File 'lib/mode/logger.rb', line 35

def mutex
  @mutex
end

Class Method Details

.default_formatterObject



131
132
133
134
135
# File 'lib/mode/logger.rb', line 131

def default_formatter
  @default_formatter ||= Proc.new do |severity, datetime, progname, message|
    "#{severity} [#{format_time(datetime)}]: #{message}\n"
  end
end

.default_levelObject



119
120
121
# File 'lib/mode/logger.rb', line 119

def default_level
  Logger::INFO
end

.default_pathObject



123
124
125
# File 'lib/mode/logger.rb', line 123

def default_path
  File.join(Mode::Config.log_dir, 'mode.log')
end

.default_rotate_freqObject



127
128
129
# File 'lib/mode/logger.rb', line 127

def default_rotate_freq
  'weekly'
end

.format_time(time) ⇒ Object



137
138
139
# File 'lib/mode/logger.rb', line 137

def format_time(time)
  time_to_datetime(time).new_offset(0).iso8601
end

.time_to_datetime(time) ⇒ Object



141
142
143
144
145
146
147
148
# File 'lib/mode/logger.rb', line 141

def time_to_datetime(time)
  #
  # http://stackoverflow.com/questions/279769/convert-to-from-datetime-and-time-in-ruby
  #
  seconds = time.sec + Rational(time.usec, 10**6)
  offset = Rational(time.utc_offset, 60 * 60 * 24)
  DateTime.new(time.year, time.month, time.day, time.hour, time.min, seconds, offset)
end

Instance Method Details

#debug(component, message, detail = []) ⇒ Object



63
64
65
# File 'lib/mode/logger.rb', line 63

def debug(component, message, detail = [])
  log_with_formatting(Logger::DEBUG, component, message, detail)
end

#debug!Object



67
68
69
# File 'lib/mode/logger.rb', line 67

def debug!
  set_log_level(Logger::DEBUG)
end

#disable!Object



55
56
57
# File 'lib/mode/logger.rb', line 55

def disable!
  mutex.synchronize { @enabled = false }
end

#enable!Object



59
60
61
# File 'lib/mode/logger.rb', line 59

def enable!
  mutex.synchronize { @enabled = true }
end

#error(component, message, detail = []) ⇒ Object



87
88
89
# File 'lib/mode/logger.rb', line 87

def error(component, message, detail = [])
  log_with_formatting(Logger::ERROR, component, message, detail)
end

#error!Object



91
92
93
# File 'lib/mode/logger.rb', line 91

def error!
  set_log_level(Logger::ERROR)
end

#fatal(component, message, detail = []) ⇒ Object



95
96
97
# File 'lib/mode/logger.rb', line 95

def fatal(component, message, detail = [])
  log_with_formatting(Logger::FATAL, component, message, detail)
end

#fatal!Object



99
100
101
# File 'lib/mode/logger.rb', line 99

def fatal!
  set_log_level(Logger::FATAL)
end

#info(component, message, detail = []) ⇒ Object



71
72
73
# File 'lib/mode/logger.rb', line 71

def info(component, message, detail = [])
  log_with_formatting(Logger::INFO, component, message, detail)
end

#info!Object



75
76
77
# File 'lib/mode/logger.rb', line 75

def info!
  set_log_level(Logger::INFO)
end

#warn(component, message, detail = []) ⇒ Object



79
80
81
# File 'lib/mode/logger.rb', line 79

def warn(component, message, detail = [])
  log_with_formatting(Logger::WARN, component, message, detail)
end

#warn!Object



83
84
85
# File 'lib/mode/logger.rb', line 83

def warn!
  set_log_level(Logger::WARN)
end