Class: Rsodx::Logger

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

Defined Under Namespace

Classes: LogEntry

Constant Summary collapse

LEVELS =
%i[info debug warn error fatal].freeze
OPTIONS =
{ with_backtrace: false }.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(adapter, options = {}) ⇒ Logger

Returns a new instance of Logger.

Raises:

  • (ArgumentError)


13
14
15
16
17
# File 'lib/rsodx/logger.rb', line 13

def initialize(adapter, options = {})
  raise ArgumentError, 'Invalid LoggerAdapter' unless adapter.is_a?(LoggerAdapter)
  @adapter = adapter
  @options = OPTIONS.merge(options).slice(*OPTIONS.keys)
end

Instance Attribute Details

#adapterObject

Returns the value of attribute adapter.



7
8
9
# File 'lib/rsodx/logger.rb', line 7

def adapter
  @adapter
end

#optionsObject

Returns the value of attribute options.



7
8
9
# File 'lib/rsodx/logger.rb', line 7

def options
  @options
end

Instance Method Details

#log(level = :info, code:, message:, context: {}, backtrace: nil) ⇒ Object

Raises:

  • (ArgumentError)


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rsodx/logger.rb', line 19

def log(level = :info, code:, message:, context: {}, backtrace: nil)
  raise ArgumentError, "Invalid log level: #{level}" unless LEVELS.include?(level)

  entry = LogEntry.new(
    timestamp: Time.now.utc.iso8601,
    appname: appname,
    level: level,
    code: code,
    message: message,
    context: context,
    backtrace: include_backtrace?(level) ? (backtrace || caller).take(10) : nil
  )

  adapter.puts(entry)
end