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.



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

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.



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

def buffer
  @buffer
end

Instance Method Details

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



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

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)


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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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