Sha256: 3c4cab5d4807d0da4956955698c26a61f3edd04c6630dca6e5b752866308ef1a

Contents?: true

Size: 1.93 KB

Versions: 7

Compression:

Stored size: 1.93 KB

Contents

require 'logger'

require_relative 'paul_bunyan/json_formatter'
require_relative 'paul_bunyan/level'
require_relative 'paul_bunyan/log_relayer'
require_relative 'paul_bunyan/text_formatter'
require_relative 'paul_bunyan/version'

require_relative 'paul_bunyan/railtie' if defined? ::Rails::Railtie

# Example Usage:
#
#   class MyClass
#     include PaulBunyan
#
#     def initialize
#       logger.info{ "something is working!" }
#     end
#   end
#
module PaulBunyan
  class Error < StandardError; end
  class UnknownFormatterError < Error; end
  class UnknownLevelError < Error; end

  # The ONE method we care about.
  def logger
    PaulBunyan.logger
  end

  class << self
    attr_accessor :default_formatter_type
    PaulBunyan.default_formatter_type = :json

    ANSI_REGEX = /(?:\e\[|\u009b)(?:\d{1,3}(?:;\d{0,3})*)?[0-9A-MRcf-npqrsuy]/.freeze
    def strip_ansi(value)
      if value.respond_to?(:to_str)
        value.to_str.gsub(ANSI_REGEX, '')
      elsif value
        value.gsub(ANSI_REGEX, '')
      end
    end

    def logger
      create_logger(STDOUT) unless @logger
      @logger
    end

    def create_logger(logdev, shift_age = 0, shift_size = 1048576, formatter_type: PaulBunyan.default_formatter_type)
      logger = Logger.new(logdev, shift_age, shift_size)
      logger.formatter = default_formatter(formatter_type) unless formatter_type.nil?
      add_logger(logger)
    end

    def add_logger(logger)
      @logger ||= LogRelayer.new
      @logger.add_logger(logger)
      logger
    end

    def remove_logger(logger)
      @logger.remove_logger(logger)
    end

    private def default_formatter(formatter_type)
      case formatter_type
      when :json
        JSONFormatter.new
      when :text
        TextFormatter.new
      else
        fail UnknownFormatterError, "Unknown formatter type #{formatter_type}"
      end
    end
  end
end

# For backwards compatibility with applications that used this prior to the rename
Logging = PaulBunyan

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
paul_bunyan-1.4.0 lib/paul_bunyan.rb
paul_bunyan-1.3.0 lib/paul_bunyan.rb
paul_bunyan-1.2.3 lib/paul_bunyan.rb
paul_bunyan-1.2.2 lib/paul_bunyan.rb
paul_bunyan-1.2.1 lib/paul_bunyan.rb
paul_bunyan-1.2.0 lib/paul_bunyan.rb
paul_bunyan-1.1.0 lib/paul_bunyan.rb