Sha256: 30d2fb29076c9cd7d9b86572fe512971011167e2a567ead1be06d24934ef0558

Contents?: true

Size: 1.85 KB

Versions: 5

Compression:

Stored size: 1.85 KB

Contents

module Itamae
  module Logger
    class FileFormatter < Formatter
      def call(severity, datetime, progname, msg)
        log = "%s : %s" % ["%5s" % severity, msg2str(msg)]
        Time.now.strftime('%F %T %z').to_s + log + "\n"
      end
    end

    def self.broadcast(logger)
      Module.new do
        define_method(:add) do |*args, &block|
          logger.add(*args, &block)
          super(*args, &block)
        end

        define_method(:<<) do |x|
          logger << x
          super(x)
        end

        define_method(:close) do
          logger.close
          super()
        end

        define_method(:progname=) do |name|
          logger.progname = name
          super(name)
        end

        define_method(:formatter=) do |formatter|
          logger.formatter = formatter
          super(formatter)
        end

        define_method(:level=) do |level|
          logger.level = level
          super(level)
        end

        define_method(:local_level=) do |level|
          logger.local_level = level if logger.respond_to?(:local_level=)
          super(level) if respond_to?(:local_level=)
        end

        define_method(:silence) do |level = Logger::ERROR, &block|
          if logger.respond_to?(:silence)
            logger.silence(level) do
              if defined?(super)
                super(level, &block)
              else
                block.call(self)
              end
            end
          else
            if defined?(super)
              super(level, &block)
            else
              block.call(self)
            end
          end
        end
      end
    end
  end

  if Dir.exist?('logs')
    @file_logger = ::Logger.new('logs/itamae.log', 'daily').tap do |l|
      l.formatter = Itamae::Logger::FileFormatter.new
    end.extend(Itamae::Logger::Helper)

    @logger.extend Itamae::Logger.broadcast(@file_logger)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
itamae-spec-0.0.6 lib/itamae-spec/logger.rb
itamae-spec-0.0.5 lib/itamae-spec/logger.rb
itamae-spec-0.0.4 lib/itamae-spec/logger.rb
itamae-spec-0.0.3 lib/itamae-spec/logger.rb
itamae-spec-0.0.2 lib/itamae-spec/logger.rb