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