Sha256: 699dd5c44a4de2d34bb03537c27353505f8628e5fedb5ffaafd7b97052ec66bb
Contents?: true
Size: 1.79 KB
Versions: 2
Compression:
Stored size: 1.79 KB
Contents
# frozen_string_literal: true require 'logger' require 'time' require 'json' require_relative 'formatter' require_relative '../hash_extensions' require_relative 'message' module Twiglet class Logger < ::Logger Hash.include HashExtensions def initialize( service_name, default_properties: {}, now: -> { Time.now.utc }, output: $stdout, level: Logger::DEBUG ) @service_name = service_name @now = now @output = output @level = level raise 'Service name is mandatory' \ unless service_name.is_a?(String) && !service_name.strip.empty? @validator = Validator.from_file("#{__dir__}/validation_schema.json") @formatter = Twiglet::Formatter.new( service_name, default_properties: default_properties, now: now, validator: @validator ) super(output, formatter: @formatter, level: level) end def configure_validation_error_response(&block) @validator.custom_error_handler = block end 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 def with(default_properties) Logger.new( @service_name, default_properties: default_properties, now: @now, output: @output, level: @level ) end alias_method :warning, :warn alias_method :critical, :fatal private def add_stack_trace(hash_to_add_to, error) hash_to_add_to[:error][:stack_trace] = error.backtrace.join("\n") if error.backtrace end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
twiglet-3.1.2 | lib/twiglet/logger.rb |
twiglet-3.1.1 | lib/twiglet/logger.rb |