Sha256: 60ded2c66dc57373c899daa847bd5cc85faa5f2dde26d59952b7d2cff26af046

Contents?: true

Size: 1.96 KB

Versions: 9

Compression:

Stored size: 1.96 KB

Contents

# typed: strict

require 'logger'
require 'colorized_string'

module Kuby
  class BasicLogger < Logger
    extend T::Sig

    sig {
      override.params(
        logdev: T.any(String, IO, StringIO, NilClass),
        shift_age: Integer,
        shift_size: Integer,
        level: Integer,
        progname: T.nilable(String),
        formatter: T.nilable(FormatterProcType),
        datetime_format: T.nilable(String),
        shift_period_suffix: T.nilable(String)
      ).void
    }
    def initialize(
        logdev, shift_age = 0, shift_size = 1048576, level: DEBUG,
        progname: nil, formatter: nil, datetime_format: nil,
        shift_period_suffix: '%Y%m%d')
      @logdev = T.let(@logdev, T.nilable(Logger::LogDevice))

      super

      self.formatter = proc do |_severity, _datetime, _progname, msg|
        "#{msg}\n"
      end
    end

    sig {
      override.params(
        progname_or_msg: T.untyped,
        block: T.nilable(T.proc.returns(T.untyped))
      ).void
    }
    def info(progname_or_msg = nil, &block)
      if block
        super(progname_or_msg) { ColorizedString[block.call].yellow }
      else
        super(ColorizedString[progname_or_msg].yellow)
      end
    end

    sig {
      override.params(
        progname_or_msg: T.untyped,
        block: T.nilable(T.proc.returns(T.untyped))
      ).void
    }
    def fatal(progname_or_msg = nil, &block)
      if block
        super(progname_or_msg) { ColorizedString[block.call].red }
      else
        super(ColorizedString[progname_or_msg].red)
      end
    end

    # adhere to the "CLI" interface
    sig {
      params(
        out: T.any(IO, StringIO),
        err: T.any(IO, StringIO),
        block: T.proc.void
      ).void
    }
    def with_pipes(out = STDOUT, err = STDERR, &block)
      previous_logdev = @logdev&.dev || STDERR
      reopen(err)
      yield
    ensure
      reopen(previous_logdev)
    end

    sig { returns(T.nilable(Process::Status)) }
    def last_status
      nil
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
kuby-core-0.17.0 lib/kuby/basic_logger.rb
kuby-core-0.16.1 lib/kuby/basic_logger.rb
kuby-core-0.16.0 lib/kuby/basic_logger.rb
kuby-core-0.15.0 lib/kuby/basic_logger.rb
kuby-core-0.14.0 lib/kuby/basic_logger.rb
kuby-core-0.13.0 lib/kuby/basic_logger.rb
kuby-core-0.12.0 lib/kuby/basic_logger.rb
kuby-core-0.11.16 lib/kuby/basic_logger.rb
kuby-core-0.11.15 lib/kuby/basic_logger.rb