Sha256: 86bb8ec0d2b4c560c4fe3abe28fc0d0fd4192426c558fd2771987cfd618f2ed2

Contents?: true

Size: 1.96 KB

Versions: 12

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, &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

12 entries across 12 versions & 1 rubygems

Version Path
kuby-core-0.11.14 lib/kuby/basic_logger.rb
kuby-core-0.11.13 lib/kuby/basic_logger.rb
kuby-core-0.11.12 lib/kuby/basic_logger.rb
kuby-core-0.11.11 lib/kuby/basic_logger.rb
kuby-core-0.11.10 lib/kuby/basic_logger.rb
kuby-core-0.11.9 lib/kuby/basic_logger.rb
kuby-core-0.11.8 lib/kuby/basic_logger.rb
kuby-core-0.11.7 lib/kuby/basic_logger.rb
kuby-core-0.11.6 lib/kuby/basic_logger.rb
kuby-core-0.11.4 lib/kuby/basic_logger.rb
kuby-core-0.11.3 lib/kuby/basic_logger.rb
kuby-core-0.11.2 lib/kuby/basic_logger.rb