class Twiglet::Logger

Public Class Methods

new( service_name, **args ) click to toggle source
Calls superclass method
# File lib/twiglet/logger.rb, line 14
def initialize(
  service_name,
  **args
)
  @service_name = service_name
  default_properties = args.delete(:default_properties) || {}
  @args = args

  now = args.fetch(:now, -> { Time.now.utc })
  output = args.fetch(:output, $stdout)
  level = args.fetch(:level, DEBUG)
  validation_schema = args.fetch(:validation_schema, File.read("#{__dir__}/validation_schema.json"))

  raise 'Service name is mandatory' \
    unless service_name.is_a?(String) && !service_name.strip.empty?

  @validator = Validator.new(validation_schema)

  formatter = Twiglet::Formatter.new(
    service_name,
    default_properties: default_properties,
    now: now,
    validator: @validator
  )
  super(output, formatter: formatter, level: level)
end

Public Instance Methods

configure_validation_error_response(&block) click to toggle source
# File lib/twiglet/logger.rb, line 41
def configure_validation_error_response(&block)
  @validator.custom_error_handler = block
end
error(message = nil, error = nil, &block) click to toggle source
Calls superclass method
# File lib/twiglet/logger.rb, line 45
def error(message = nil, error = nil, &block)
  if error
    error_fields = {
      error: {
        type: error.class,
        message: error.message
      }
    }
    add_stack_trace(error_fields, error)
    message = Message.new(message).merge(error_fields)
  end

  super(message, &block)
end
with(default_properties) click to toggle source
# File lib/twiglet/logger.rb, line 60
def with(default_properties)
  Logger.new(
    @service_name,
    **@args.merge(default_properties: default_properties)
  )
end

Private Instance Methods

add_stack_trace(hash_to_add_to, error) click to toggle source
# File lib/twiglet/logger.rb, line 72
def add_stack_trace(hash_to_add_to, error)
  hash_to_add_to[:error][:stack_trace] = error.backtrace if error.backtrace
end