Class: Norikra::Logger

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

Direct Known Subclasses

DummyLogger

Constant Summary collapse

DEFAULT_MEMORY_BUFFER_LINES =
1000
TIME_FORMAT =
'%Y-%m-%d %H:%M:%S %z'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, opts = {}) ⇒ Logger

Returns a new instance of Logger.



174
175
176
177
178
# File 'lib/norikra/logger.rb', line 174

def initialize(name, opts={})
  @log4j = org.apache.commons.logging.LogFactory.getLog(name)
  @buffer = Array.new
  @buffer_lines = opts[:bufferlines] || DEFAULT_MEMORY_BUFFER_LINES
end

Instance Attribute Details

#bufferObject (readonly)

Returns the value of attribute buffer.



169
170
171
# File 'lib/norikra/logger.rb', line 169

def buffer
  @buffer
end

Instance Method Details

#debug(message, data = nil, from = nil) ⇒ Object



205
206
207
208
209
210
# File 'lib/norikra/logger.rb', line 205

def debug(message, data=nil, from=nil)
  return unless @log4j.isDebugEnabled
  line = format(from, message, data)
  push('debug', line)
  @log4j.debug(line)
end

#enabled?(level) ⇒ Boolean

Returns:

  • (Boolean)


187
188
189
190
191
192
193
194
195
196
# File 'lib/norikra/logger.rb', line 187

def enabled?(level)
  case level
  when LEVEL_TRACE then @log4j.isTraceEnabled
  when LEVEL_DEBUG then @log4j.isDebugEnabled
  when LEVEL_INFO  then @log4j.isInfoEnabled
  when LEVEL_WARN  then @log4j.isWarnEnabled
  when LEVEL_ERROR then @log4j.isErrorEnabled
  else true
  end
end

#error(message, data = nil, from = nil) ⇒ Object



226
227
228
229
230
231
# File 'lib/norikra/logger.rb', line 226

def error(message, data=nil, from=nil)
  return unless @log4j.isErrorEnabled
  line = format(from, message, data)
  push('error', line)
  @log4j.error(line)
end

#fatal(message, data = nil, from = nil) ⇒ Object



233
234
235
236
237
238
# File 'lib/norikra/logger.rb', line 233

def fatal(message, data=nil, from=nil)
  return unless @log4j.isFatalEnabled
  line = format(from, message, data)
  push('fatal', line)
  @log4j.fatal(line)
end

#format(from, message, data) ⇒ Object



259
260
261
262
# File 'lib/norikra/logger.rb', line 259

def format(from, message, data)
  # LOG_FORMAT = '%s: %s%s'
  LOG_FORMAT % [format_location(from), message, format_data(data)]
end

#format_data(data = nil) ⇒ Object



246
247
248
249
250
251
252
253
254
255
256
257
# File 'lib/norikra/logger.rb', line 246

def format_data(data=nil)
  return '' if data.nil?

  #, status:404, message:'content not found'
  if data.is_a?(Proc)
    format_data(data.call)
  elsif data.is_a?(Hash)
    ', ' + data.map{|k,v| "#{k}:#{v.inspect}"}.join(', ')
  else
    ', ' + data.inspect
  end
end

#format_location(locations) ⇒ Object



240
241
242
243
244
# File 'lib/norikra/logger.rb', line 240

def format_location(locations)
  return '' if locations.nil?
  c = locations.first
  "#{c.path}:#{c.lineno}(#{c.label})"
end

#info(message, data = nil, from = nil) ⇒ Object



212
213
214
215
216
217
# File 'lib/norikra/logger.rb', line 212

def info(message, data=nil, from=nil)
  return unless @log4j.isInfoEnabled
  line = format(from, message, data)
  push('info', line)
  @log4j.info(line)
end

#push(level, line) ⇒ Object



180
181
182
183
184
185
# File 'lib/norikra/logger.rb', line 180

def push(level, line)
  if @buffer.size == @buffer_lines
    @buffer.shift
  end
  @buffer << [Time.now.strftime(TIME_FORMAT), level, line]
end

#trace(message, data = nil, from = nil) ⇒ Object



198
199
200
201
202
203
# File 'lib/norikra/logger.rb', line 198

def trace(message, data=nil, from=nil)
  return unless @log4j.isTraceEnabled
  line = format(from, message, data)
  push('trace', line)
  @log4j.trace(line)
end

#warn(message, data = nil, from = nil) ⇒ Object



219
220
221
222
223
224
# File 'lib/norikra/logger.rb', line 219

def warn(message, data=nil, from=nil)
  return unless @log4j.isWarnEnabled
  line = format(from, message, data)
  push('warn', line)
  @log4j.warn(line)
end