Sha256: 62c27243de0f38da292f5b7ee7cd470956e414f740d9c3519bc6738582ca78e6

Contents?: true

Size: 1.25 KB

Versions: 14

Compression:

Stored size: 1.25 KB

Contents

module Chanko
  module Logger

    class << self
      ::Logger::Severity.constants.each do |level|
        method_name = level.downcase
        define_method(method_name) do |message|
          logger.try(method_name, decorate(message)) if Config.enable_logger
        end
      end

      def decorate(message)
        Message.new(message).to_s
      end

      def logger
        Rails.logger
      end
    end

    class Message
      PREFIX = "  [Chanko]"

      def initialize(object)
        @object = object
      end

      def to_s
        prefix(content)
      end

      def prefix(str)
        str.split("\n").map {|line| "#{PREFIX} #{line}" }.join("\n")
      end

      def content
        if @object.is_a?(Exception)
          "#{klass}#{body}#{backtrace}"
        else
          @object.to_s
        end
      end

      def body
        unless @object.message.empty?
          " - #@object"
        end
      end

      def klass
        @object.class
      end

      def backtrace
        if has_backtrace?
          lines = @object.backtrace[0...Config.backtrace_limit]
          str   = lines.map {|line| "  #{line}" }.join("\n")
          "\n#{str}"
        end
      end

      def has_backtrace?
        @object.backtrace
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
chanko-2.3.0 lib/chanko/logger.rb
chanko-2.2.1 lib/chanko/logger.rb
chanko-2.2.0 lib/chanko/logger.rb
chanko-2.1.1 lib/chanko/logger.rb
chanko-2.1.0 lib/chanko/logger.rb
chanko-2.0.8 lib/chanko/logger.rb
chanko-2.0.7 lib/chanko/logger.rb
chanko-2.0.6 lib/chanko/logger.rb
chanko-2.0.5 lib/chanko/logger.rb
chanko-2.0.4 lib/chanko/logger.rb
chanko-2.0.3 lib/chanko/logger.rb
chanko-2.0.2 lib/chanko/logger.rb
chanko-2.0.1 lib/chanko/logger.rb
chanko-2.0.0 lib/chanko/logger.rb