Sha256: fad64b4e5f71472bae886928bffcb09d6faeacd3769edf7891067a96f48ca77e

Contents?: true

Size: 1.27 KB

Versions: 2

Compression:

Stored size: 1.27 KB

Contents

require 'phut'

module Trema
  # The default logger.
  class Logger
    def initialize(name)
      @name = name
      @logger = {}.tap do |list|
        list[:file] = create_file_logger
        list[:stdout] = create_stdout_logger
      end
    end

    def unknown(message)
      output :unknown, message
    end

    def fatal(message)
      output :fatal, message
    end

    def error(message)
      output :error, message
    end

    def warn(message)
      output :warn, message
    end

    def info(message)
      output :info, message
    end

    def debug(message)
      output :debug, message
    end

    def level=(level)
      @logger.values.each { |each| each.__send__ :level=, level }
    end

    def level
      @logger[:file].level
    end

    private

    def output(message_type, message)
      @logger.values.each { |each| each.__send__ message_type, message }
      message
    end

    def create_file_logger
      ::Logger.new("#{Phut.log_dir}/#{@name}.log").tap do |logger|
        logger.level = ::Logger::INFO
      end
    end

    def create_stdout_logger
      $stdout.sync = true
      ::Logger.new($stdout).tap do |logger|
        logger.formatter = proc { |_sev, _dtm, _name, msg| msg + "\n" }
        logger.level = ::Logger::INFO
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
trema-0.10.1 lib/trema/logger.rb
trema-0.10.0 lib/trema/logger.rb