Sha256: a0da0ae3bb395b913819f154b8e9c26677ad2b389d5e108c44af1a33718cbcbe

Contents?: true

Size: 1.04 KB

Versions: 10

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

require 'fileutils'
require 'logger'

module Entangler
  class Logger
    def self.create_log_dir(base_dir)
      FileUtils.mkdir_p(File.dirname(log_file_path(base_dir)))
    end

    def self.log_file_path(base_dir, log_file_name = 'entangler.log')
      File.join(base_dir, '.entangler', 'log', log_file_name)
    end

    def initialize(outputs, verbose: false)
      @loggers = Array(outputs).map do |output|
        logger = ::Logger.new(output)

        logger.level = verbose ? ::Logger::DEBUG : ::Logger::INFO
        logger.formatter = proc do |severity, datetime, _, msg|
          date_format = datetime.strftime('%Y-%m-%d %H:%M:%S')
          "[#{date_format}] #{severity.rjust(5)}: #{msg}\n"
        end

        logger
      end
    end

    def level=(level)
      @loggers.each { |logger| logger.level = level }
    end

    ::Logger::Severity.constants.each do |level|
      define_method(level.downcase) do |*args|
        @loggers.each { |logger| logger.send(level.downcase, *args) }
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
entangler-1.4.1 lib/entangler/logger.rb
entangler-1.4.0 lib/entangler/logger.rb
entangler-1.3.3 lib/entangler/logger.rb
entangler-1.3.2 lib/entangler/logger.rb
entangler-1.3.1 lib/entangler/logger.rb
entangler-1.3.0 lib/entangler/logger.rb
entangler-1.2.3 lib/entangler/logger.rb
entangler-1.2.2 lib/entangler/logger.rb
entangler-1.2.1 lib/entangler/logger.rb
entangler-1.2.0 lib/entangler/logger.rb