Sha256: 1e169b7af4ade5f7f39eeba2ed76ac962d75300b43e32567c30b4843bfa6adc7

Contents?: true

Size: 1.94 KB

Versions: 2

Compression:

Stored size: 1.94 KB

Contents

require 'active_support/all'
require 'logatron/version'
require 'logatron/const'
require 'logatron/contexts'
require 'logatron/message_formatting'
require 'logatron/basic_scoped_logger'
require 'logatron/basic_formatter'
require 'logatron/basic_logger'
require 'logatron/configuration'

module Logatron
  class << self
    attr_internal :log

    def logger
      @log ||= Logatron::BasicLogger.new
    end

    def log_exception(e, severity, additional_info = {})
      # 'additional_info' can be a flat hash or anything with '#to_s'
      message = exception_message(e, additional_info)
      logger.send(severity.downcase, message)
    end

    def level=(level)
      logger.level = level
    end

    def error(msg)
      logger.error(msg)
    end

    def warn(msg)
      logger.warn(msg)
    end

    def info(msg)
      logger.info(msg)
    end

    def fatal(msg)
      logger.fatal(msg)
    end

    def critical(msg)
      logger.critical(msg)
    end

    def debug(msg)
      logger.debug(msg)
    end

    def http_headers
      {
        'X-Ascent-Log-Id' => msg_id
      }
    end

    def log(id: msg_id, site: Logatron.site, msg: '-', severity: Logatron::INFO, request: '-', status: '-', source: '-', &block)
      logger.log(id: id, site: site, msg: msg, severity: severity, request: request, status: status, source: source, &block)
    end

    def site
      Logatron::Contexts.site
    end

    def site=(site)
      Logatron::Contexts.site = site
    end

    def msg_id
      Logatron::Contexts.msg_id
    end

    def msg_id=(id)
      Logatron::Contexts.msg_id = id
    end

    private

    def exception_message(e, additional)
      info = additional.is_a?(Hash) ? additional.map { |(k, v)| "#{k}=>#{v}" }.join(', ') : additional
      info_msg = info.nil? || info.empty? ? '' : "; MORE_INFO( #{info} )"
      backtrace = configuration.backtrace_cleaner.clean(e.backtrace).join(' -> ')
      "#{e.class} #{e.message}#{info_msg} -> #{backtrace}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
logatron-0.6.0 lib/logatron/logatron.rb
logatron-0.5.0 lib/logatron/logatron.rb